Files
Assistant/database/migrations/017_intent_work_planning_foundation.sql
m 4fc85511c4
CI / test (push) Successful in 16s
CI / test (pull_request) Successful in 14s
DEV-000063 intent work planning foundation
2026-08-17 15:10:43 +03:00

105 lines
3.3 KiB
PL/PgSQL

BEGIN;
SET ROLE work_role;
CREATE TABLE IF NOT EXISTS work.goals (
goal_id TEXT PRIMARY KEY,
source_intent_id TEXT NOT NULL,
source_utterance_id TEXT NOT NULL,
actor_id TEXT NOT NULL,
principal_id TEXT NOT NULL,
scope_id TEXT NOT NULL,
project_id TEXT NOT NULL DEFAULT '',
project_display_name TEXT NOT NULL DEFAULT '',
desired_outcome TEXT NOT NULL,
constraints_text TEXT NOT NULL,
state TEXT NOT NULL,
provenance TEXT NOT NULL DEFAULT '',
revision BIGINT NOT NULL,
created_at_unix_millis BIGINT NOT NULL,
updated_at_unix_millis BIGINT NOT NULL,
CHECK (desired_outcome <> ''),
CHECK (state IN ('PROPOSED','UNDERSTOOD','PLANNING','READY','IN_PROGRESS','BLOCKED','COMPLETED','FAILED','CANCELLED','SUPERSEDED')),
CHECK (revision > 0)
);
CREATE TABLE IF NOT EXISTS work.plan_candidates (
plan_candidate_id TEXT PRIMARY KEY,
goal_id TEXT NOT NULL,
source TEXT NOT NULL,
state TEXT NOT NULL,
summary TEXT NOT NULL,
validation_summary TEXT NOT NULL,
requires_clarification BOOLEAN NOT NULL,
accepted_at_unix_millis BIGINT NOT NULL DEFAULT 0,
recorded_at_unix_millis BIGINT NOT NULL,
CHECK (goal_id <> ''),
CHECK (source <> ''),
CHECK (summary <> ''),
CHECK (state IN ('PROPOSED','VALIDATED','ACCEPTED','REJECTED'))
);
CREATE TABLE IF NOT EXISTS work.work_plans (
work_plan_id TEXT PRIMARY KEY,
goal_id TEXT NOT NULL,
accepted_candidate_id TEXT NOT NULL,
revision BIGINT NOT NULL,
state TEXT NOT NULL,
summary TEXT NOT NULL,
recorded_at_unix_millis BIGINT NOT NULL,
CHECK (goal_id <> ''),
CHECK (accepted_candidate_id <> ''),
CHECK (revision > 0),
CHECK (state IN ('PROPOSED','VALIDATED','ACCEPTED','REJECTED'))
);
CREATE TABLE IF NOT EXISTS work.capability_requirements (
capability_requirement_id TEXT PRIMARY KEY,
plan_candidate_id TEXT NOT NULL,
capability_kind TEXT NOT NULL,
capability_id TEXT NOT NULL DEFAULT '',
purpose TEXT NOT NULL,
state TEXT NOT NULL,
epistemic_precondition TEXT NOT NULL,
recorded_at_unix_millis BIGINT NOT NULL,
CHECK (plan_candidate_id <> ''),
CHECK (capability_kind <> ''),
CHECK (purpose <> ''),
CHECK (state IN ('REQUIRED','AVAILABLE','MISSING','BLOCKED')),
CHECK (epistemic_precondition IN ('UNVERIFIED','VERIFIED','REJECTED','UNKNOWN','NOT_APPLICABLE'))
);
CREATE TABLE IF NOT EXISTS work.plan_steps (
plan_step_id TEXT PRIMARY KEY,
plan_candidate_id TEXT NOT NULL,
ordinal INTEGER NOT NULL,
kind TEXT NOT NULL,
description TEXT NOT NULL,
requires_capability_id TEXT NOT NULL DEFAULT '',
recorded_at_unix_millis BIGINT NOT NULL,
CHECK (plan_candidate_id <> ''),
CHECK (ordinal > 0),
CHECK (kind IN ('INVESTIGATE','OBSERVE','VERIFY','REASON','REPORT','PREPARE','COMMUNICATE','SCHEDULE','MODIFY','RUN_CHECKS','CLARIFY','NO_EXECUTION')),
CHECK (description <> '')
);
CREATE TABLE IF NOT EXISTS work.delegation_candidates (
delegation_candidate_id TEXT PRIMARY KEY,
plan_candidate_id TEXT NOT NULL,
capability_requirement_id TEXT NOT NULL,
kind TEXT NOT NULL,
executor_hint TEXT NOT NULL DEFAULT '',
state TEXT NOT NULL,
reason TEXT NOT NULL,
recorded_at_unix_millis BIGINT NOT NULL,
CHECK (plan_candidate_id <> ''),
CHECK (capability_requirement_id <> ''),
CHECK (kind IN ('AGENT','TOOL','ADAPTER','HUMAN','UNAVAILABLE')),
CHECK (state IN ('PROPOSED','SELECTED','BLOCKED')),
CHECK (reason <> '')
);
RESET ROLE;
COMMIT;