@pellux/goodvibes-sdk 0.33.20 → 0.33.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/browser-knowledge.d.ts +49 -0
  2. package/dist/browser-knowledge.d.ts.map +1 -1
  3. package/dist/browser-knowledge.js +22 -0
  4. package/dist/contracts/artifacts/operator-contract.json +4615 -4
  5. package/dist/events/agents.d.ts +11 -0
  6. package/dist/events/agents.d.ts.map +1 -1
  7. package/dist/events/index.d.ts +1 -1
  8. package/dist/events/index.d.ts.map +1 -1
  9. package/dist/events/planner.d.ts +69 -1
  10. package/dist/events/planner.d.ts.map +1 -1
  11. package/dist/platform/agents/wrfc-controller.d.ts +19 -0
  12. package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
  13. package/dist/platform/agents/wrfc-controller.js +286 -22
  14. package/dist/platform/agents/wrfc-reporting.d.ts.map +1 -1
  15. package/dist/platform/agents/wrfc-reporting.js +5 -1
  16. package/dist/platform/agents/wrfc-types.d.ts +1 -1
  17. package/dist/platform/agents/wrfc-types.d.ts.map +1 -1
  18. package/dist/platform/control-plane/method-catalog-knowledge.d.ts.map +1 -1
  19. package/dist/platform/control-plane/method-catalog-knowledge.js +154 -1
  20. package/dist/platform/control-plane/operator-contract-schemas-project-planning.d.ts +4 -0
  21. package/dist/platform/control-plane/operator-contract-schemas-project-planning.d.ts.map +1 -1
  22. package/dist/platform/control-plane/operator-contract-schemas-project-planning.js +78 -0
  23. package/dist/platform/core/orchestrator-turn-helpers.d.ts.map +1 -1
  24. package/dist/platform/core/orchestrator-turn-helpers.js +27 -11
  25. package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
  26. package/dist/platform/core/orchestrator-turn-loop.js +4 -1
  27. package/dist/platform/core/wrfc-routing.d.ts +5 -0
  28. package/dist/platform/core/wrfc-routing.d.ts.map +1 -0
  29. package/dist/platform/core/wrfc-routing.js +51 -0
  30. package/dist/platform/daemon/http/project-planning-routes.d.ts.map +1 -1
  31. package/dist/platform/daemon/http/project-planning-routes.js +67 -0
  32. package/dist/platform/knowledge/index.d.ts +1 -1
  33. package/dist/platform/knowledge/index.d.ts.map +1 -1
  34. package/dist/platform/knowledge/project-planning/helpers.d.ts +1 -1
  35. package/dist/platform/knowledge/project-planning/helpers.d.ts.map +1 -1
  36. package/dist/platform/knowledge/project-planning/helpers.js +4 -0
  37. package/dist/platform/knowledge/project-planning/index.d.ts +1 -1
  38. package/dist/platform/knowledge/project-planning/index.d.ts.map +1 -1
  39. package/dist/platform/knowledge/project-planning/service.d.ts +21 -1
  40. package/dist/platform/knowledge/project-planning/service.d.ts.map +1 -1
  41. package/dist/platform/knowledge/project-planning/service.js +502 -1
  42. package/dist/platform/knowledge/project-planning/types.d.ts +140 -0
  43. package/dist/platform/knowledge/project-planning/types.d.ts.map +1 -1
  44. package/dist/platform/runtime/emitters/agents.d.ts +11 -0
  45. package/dist/platform/runtime/emitters/agents.d.ts.map +1 -1
  46. package/dist/platform/runtime/emitters/planner.d.ts +22 -0
  47. package/dist/platform/runtime/emitters/planner.d.ts.map +1 -1
  48. package/dist/platform/runtime/emitters/planner.js +15 -0
  49. package/dist/platform/runtime/events/index.d.ts +1 -1
  50. package/dist/platform/runtime/events/index.d.ts.map +1 -1
  51. package/dist/platform/runtime/services.d.ts.map +1 -1
  52. package/dist/platform/runtime/services.js +2 -0
  53. package/dist/platform/runtime/store/domains/agents.d.ts +3 -1
  54. package/dist/platform/runtime/store/domains/agents.d.ts.map +1 -1
  55. package/dist/platform/runtime/store/helpers/reducers/lifecycle.d.ts.map +1 -1
  56. package/dist/platform/runtime/store/helpers/reducers/lifecycle.js +25 -6
  57. package/dist/platform/tools/agent/index.d.ts.map +1 -1
  58. package/dist/platform/tools/agent/index.js +131 -64
  59. package/dist/platform/tools/agent/manager.d.ts +1 -0
  60. package/dist/platform/tools/agent/manager.d.ts.map +1 -1
  61. package/dist/platform/tools/agent/manager.js +36 -7
  62. package/dist/platform/tools/agent/schema.d.ts.map +1 -1
  63. package/dist/platform/tools/agent/schema.js +7 -6
  64. package/dist/platform/version.js +1 -1
  65. package/package.json +9 -9
@@ -2,7 +2,7 @@ import { EMPTY_OBJECT_SCHEMA, STRING_SCHEMA, BOOLEAN_SCHEMA, NUMBER_SCHEMA, arra
2
2
  import { builtinGatewayHomeGraphMethodDescriptors } from './method-catalog-homegraph.js';
3
3
  import { GRAPHQL_VARIABLES_SCHEMA, JSON_RECORD_SCHEMA, METADATA_SCHEMA, STRING_LIST_SCHEMA } from './operator-contract-schemas-shared.js';
4
4
  import { KNOWLEDGE_BATCH_INGEST_RESULT_SCHEMA, KNOWLEDGE_BROWSER_SYNC_RESULT_SCHEMA, KNOWLEDGE_ASK_OUTPUT_SCHEMA, KNOWLEDGE_CONSOLIDATION_DECISION_SCHEMA, KNOWLEDGE_CANDIDATE_OUTPUT_SCHEMA, KNOWLEDGE_CANDIDATES_OUTPUT_SCHEMA, KNOWLEDGE_CONNECTOR_INGEST_INPUT_SCHEMA, KNOWLEDGE_CONNECTOR_DOCTOR_OUTPUT_SCHEMA, KNOWLEDGE_CONNECTORS_OUTPUT_SCHEMA, KNOWLEDGE_CONNECTOR_ENTITY_OUTPUT_SCHEMA, KNOWLEDGE_EXTRACTION_OUTPUT_SCHEMA, KNOWLEDGE_EXTRACTIONS_OUTPUT_SCHEMA, KNOWLEDGE_GRAPHQL_EXECUTE_OUTPUT_SCHEMA, KNOWLEDGE_GRAPHQL_SCHEMA_OUTPUT_SCHEMA, KNOWLEDGE_INGEST_RESULT_SCHEMA, KNOWLEDGE_ITEM_ENTITY_OUTPUT_SCHEMA, KNOWLEDGE_JOB_OUTPUT_SCHEMA, KNOWLEDGE_JOB_RUN_OUTPUT_SCHEMA, KNOWLEDGE_JOB_RUN_REQUEST_SCHEMA, KNOWLEDGE_JOB_RUNS_OUTPUT_SCHEMA, KNOWLEDGE_JOBS_OUTPUT_SCHEMA, KNOWLEDGE_LINT_OUTPUT_SCHEMA, KNOWLEDGE_MAP_OUTPUT_SCHEMA, KNOWLEDGE_MATERIALIZED_PROJECTION_SCHEMA, KNOWLEDGE_NODES_OUTPUT_SCHEMA, KNOWLEDGE_PACKET_SCHEMA, KNOWLEDGE_PACKET_DETAIL_SCHEMA, KNOWLEDGE_PROJECTION_BUNDLE_SCHEMA, KNOWLEDGE_PROJECTION_TARGETS_OUTPUT_SCHEMA, KNOWLEDGE_REINDEX_OUTPUT_SCHEMA, KNOWLEDGE_REFINEMENT_RUN_OUTPUT_SCHEMA, KNOWLEDGE_REFINEMENT_TASK_OUTPUT_SCHEMA, KNOWLEDGE_REFINEMENT_TASKS_OUTPUT_SCHEMA, KNOWLEDGE_REPORT_OUTPUT_SCHEMA, KNOWLEDGE_REPORTS_OUTPUT_SCHEMA, KNOWLEDGE_SCHEDULE_INPUT_SCHEMA, KNOWLEDGE_SCHEDULE_OUTPUT_SCHEMA, KNOWLEDGE_SCHEDULES_OUTPUT_SCHEMA, KNOWLEDGE_SEARCH_OUTPUT_SCHEMA, KNOWLEDGE_SOURCE_TYPE_SCHEMA, KNOWLEDGE_SOURCES_OUTPUT_SCHEMA, KNOWLEDGE_STATUS_SCHEMA, KNOWLEDGE_ISSUE_REVIEW_OUTPUT_SCHEMA, KNOWLEDGE_ISSUES_OUTPUT_SCHEMA, KNOWLEDGE_USAGE_OUTPUT_SCHEMA, } from './operator-contract-schemas-knowledge.js';
5
- import { PROJECT_PLANNING_DECISION_OUTPUT_SCHEMA, PROJECT_PLANNING_DECISIONS_OUTPUT_SCHEMA, PROJECT_PLANNING_EVALUATION_SCHEMA, PROJECT_PLANNING_LANGUAGE_OUTPUT_SCHEMA, PROJECT_PLANNING_SPACE_INPUT_SCHEMA, PROJECT_PLANNING_STATE_OUTPUT_SCHEMA, PROJECT_PLANNING_STATUS_SCHEMA, } from './operator-contract-schemas-project-planning.js';
5
+ import { PROJECT_PLANNING_DECISION_OUTPUT_SCHEMA, PROJECT_PLANNING_DECISIONS_OUTPUT_SCHEMA, PROJECT_PLANNING_EVALUATION_SCHEMA, PROJECT_PLANNING_LANGUAGE_OUTPUT_SCHEMA, PROJECT_PLANNING_SPACE_INPUT_SCHEMA, PROJECT_PLANNING_STATE_OUTPUT_SCHEMA, PROJECT_PLANNING_STATUS_SCHEMA, PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA, PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA, PROJECT_WORK_PLAN_TASK_OUTPUT_SCHEMA, } from './operator-contract-schemas-project-planning.js';
6
6
  const KNOWLEDGE_SPACE_INPUT_FIELDS = {
7
7
  knowledgeSpaceId: STRING_SCHEMA,
8
8
  includeAllSpaces: BOOLEAN_SCHEMA,
@@ -745,5 +745,158 @@ export const builtinGatewayKnowledgeMethodDescriptors = [
745
745
  }, ['language']),
746
746
  outputSchema: PROJECT_PLANNING_LANGUAGE_OUTPUT_SCHEMA,
747
747
  }),
748
+ methodDescriptor({
749
+ id: 'projectPlanning.workPlan.snapshot',
750
+ title: 'Project Work Plan Snapshot',
751
+ description: 'Return the durable project-scoped work-plan snapshot, including tasks and status counts.',
752
+ category: 'knowledge',
753
+ scopes: ['read:knowledge'],
754
+ http: { method: 'GET', path: '/api/projects/planning/work-plan' },
755
+ inputSchema: objectSchema({
756
+ projectId: STRING_SCHEMA,
757
+ knowledgeSpaceId: STRING_SCHEMA,
758
+ workPlanId: STRING_SCHEMA,
759
+ status: STRING_SCHEMA,
760
+ parentTaskId: STRING_SCHEMA,
761
+ chainId: STRING_SCHEMA,
762
+ owner: STRING_SCHEMA,
763
+ limit: NUMBER_SCHEMA,
764
+ }),
765
+ outputSchema: PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA,
766
+ }),
767
+ methodDescriptor({
768
+ id: 'projectPlanning.workPlan.tasks.list',
769
+ title: 'List Project Work Plan Tasks',
770
+ description: 'List durable project-scoped work-plan tasks with optional status, owner, parent, or WRFC-chain filters.',
771
+ category: 'knowledge',
772
+ scopes: ['read:knowledge'],
773
+ http: { method: 'GET', path: '/api/projects/planning/work-plan/tasks' },
774
+ inputSchema: objectSchema({
775
+ projectId: STRING_SCHEMA,
776
+ knowledgeSpaceId: STRING_SCHEMA,
777
+ workPlanId: STRING_SCHEMA,
778
+ status: STRING_SCHEMA,
779
+ parentTaskId: STRING_SCHEMA,
780
+ chainId: STRING_SCHEMA,
781
+ owner: STRING_SCHEMA,
782
+ limit: NUMBER_SCHEMA,
783
+ }),
784
+ outputSchema: PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA,
785
+ }),
786
+ methodDescriptor({
787
+ id: 'projectPlanning.workPlan.task.get',
788
+ title: 'Get Project Work Plan Task',
789
+ description: 'Fetch one durable project-scoped work-plan task by id.',
790
+ category: 'knowledge',
791
+ scopes: ['read:knowledge'],
792
+ http: { method: 'GET', path: '/api/projects/planning/work-plan/tasks/{taskId}' },
793
+ inputSchema: objectSchema({
794
+ projectId: STRING_SCHEMA,
795
+ knowledgeSpaceId: STRING_SCHEMA,
796
+ workPlanId: STRING_SCHEMA,
797
+ taskId: STRING_SCHEMA,
798
+ }, ['taskId']),
799
+ outputSchema: PROJECT_WORK_PLAN_TASK_OUTPUT_SCHEMA,
800
+ }),
801
+ methodDescriptor({
802
+ id: 'projectPlanning.workPlan.task.create',
803
+ title: 'Create Project Work Plan Task',
804
+ description: 'Create a durable project-scoped work-plan task for TUI, WebUI, APK, daemon planning, or WRFC correlation.',
805
+ category: 'knowledge',
806
+ access: 'admin',
807
+ scopes: ['write:knowledge'],
808
+ http: { method: 'POST', path: '/api/projects/planning/work-plan/tasks' },
809
+ inputSchema: bodyEnvelopeSchema({
810
+ projectId: STRING_SCHEMA,
811
+ knowledgeSpaceId: STRING_SCHEMA,
812
+ workPlanId: STRING_SCHEMA,
813
+ task: JSON_RECORD_SCHEMA,
814
+ }, ['task']),
815
+ outputSchema: PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA,
816
+ }),
817
+ methodDescriptor({
818
+ id: 'projectPlanning.workPlan.task.update',
819
+ title: 'Update Project Work Plan Task',
820
+ description: 'Patch a durable project-scoped work-plan task.',
821
+ category: 'knowledge',
822
+ access: 'admin',
823
+ scopes: ['write:knowledge'],
824
+ http: { method: 'PATCH', path: '/api/projects/planning/work-plan/tasks/{taskId}' },
825
+ inputSchema: bodyEnvelopeSchema({
826
+ projectId: STRING_SCHEMA,
827
+ knowledgeSpaceId: STRING_SCHEMA,
828
+ workPlanId: STRING_SCHEMA,
829
+ taskId: STRING_SCHEMA,
830
+ patch: JSON_RECORD_SCHEMA,
831
+ }, ['taskId', 'patch']),
832
+ outputSchema: PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA,
833
+ }),
834
+ methodDescriptor({
835
+ id: 'projectPlanning.workPlan.task.status',
836
+ title: 'Set Project Work Plan Task Status',
837
+ description: 'Validate and apply a project work-plan task status transition.',
838
+ category: 'knowledge',
839
+ access: 'admin',
840
+ scopes: ['write:knowledge'],
841
+ http: { method: 'POST', path: '/api/projects/planning/work-plan/tasks/{taskId}/status' },
842
+ inputSchema: bodyEnvelopeSchema({
843
+ projectId: STRING_SCHEMA,
844
+ knowledgeSpaceId: STRING_SCHEMA,
845
+ workPlanId: STRING_SCHEMA,
846
+ taskId: STRING_SCHEMA,
847
+ status: STRING_SCHEMA,
848
+ reason: STRING_SCHEMA,
849
+ source: STRING_SCHEMA,
850
+ }, ['taskId', 'status']),
851
+ outputSchema: PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA,
852
+ }),
853
+ methodDescriptor({
854
+ id: 'projectPlanning.workPlan.tasks.reorder',
855
+ title: 'Reorder Project Work Plan Tasks',
856
+ description: 'Replace task ordering for the current project work plan.',
857
+ category: 'knowledge',
858
+ access: 'admin',
859
+ scopes: ['write:knowledge'],
860
+ http: { method: 'POST', path: '/api/projects/planning/work-plan/tasks/reorder' },
861
+ inputSchema: bodyEnvelopeSchema({
862
+ projectId: STRING_SCHEMA,
863
+ knowledgeSpaceId: STRING_SCHEMA,
864
+ workPlanId: STRING_SCHEMA,
865
+ orderedTaskIds: STRING_LIST_SCHEMA,
866
+ }, ['orderedTaskIds']),
867
+ outputSchema: PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA,
868
+ }),
869
+ methodDescriptor({
870
+ id: 'projectPlanning.workPlan.task.delete',
871
+ title: 'Delete Project Work Plan Task',
872
+ description: 'Delete a durable project-scoped work-plan task.',
873
+ category: 'knowledge',
874
+ access: 'admin',
875
+ scopes: ['write:knowledge'],
876
+ http: { method: 'DELETE', path: '/api/projects/planning/work-plan/tasks/{taskId}' },
877
+ inputSchema: objectSchema({
878
+ projectId: STRING_SCHEMA,
879
+ knowledgeSpaceId: STRING_SCHEMA,
880
+ workPlanId: STRING_SCHEMA,
881
+ taskId: STRING_SCHEMA,
882
+ }, ['taskId']),
883
+ outputSchema: PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA,
884
+ }),
885
+ methodDescriptor({
886
+ id: 'projectPlanning.workPlan.clearCompleted',
887
+ title: 'Clear Completed Project Work Plan Tasks',
888
+ description: 'Remove completed project work-plan tasks. Defaults to clearing status done only.',
889
+ category: 'knowledge',
890
+ access: 'admin',
891
+ scopes: ['write:knowledge'],
892
+ http: { method: 'POST', path: '/api/projects/planning/work-plan/clear-completed' },
893
+ inputSchema: bodyEnvelopeSchema({
894
+ projectId: STRING_SCHEMA,
895
+ knowledgeSpaceId: STRING_SCHEMA,
896
+ workPlanId: STRING_SCHEMA,
897
+ statuses: STRING_LIST_SCHEMA,
898
+ }),
899
+ outputSchema: PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA,
900
+ }),
748
901
  ...builtinGatewayHomeGraphMethodDescriptors,
749
902
  ];
@@ -1,4 +1,8 @@
1
1
  export declare const PROJECT_PLANNING_SPACE_INPUT_SCHEMA: Record<string, unknown>;
2
+ export declare const PROJECT_WORK_PLAN_TASK_SCHEMA: Record<string, unknown>;
3
+ export declare const PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA: Record<string, unknown>;
4
+ export declare const PROJECT_WORK_PLAN_TASK_OUTPUT_SCHEMA: Record<string, unknown>;
5
+ export declare const PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA: Record<string, unknown>;
2
6
  export declare const PROJECT_PLANNING_STATUS_SCHEMA: Record<string, unknown>;
3
7
  export declare const PROJECT_PLANNING_STATE_OUTPUT_SCHEMA: Record<string, unknown>;
4
8
  export declare const PROJECT_PLANNING_EVALUATION_SCHEMA: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"operator-contract-schemas-project-planning.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-project-planning.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mCAAmC,yBAGV,CAAC;AA4FvC,eAAO,MAAM,8BAA8B,yBAOyE,CAAC;AAErH,eAAO,MAAM,oCAAoC,yBAM0B,CAAC;AAE5E,eAAO,MAAM,kCAAkC,yBAQ0D,CAAC;AAE1G,eAAO,MAAM,wCAAwC,yBAKmC,CAAC;AAEzF,eAAO,MAAM,uCAAuC,yBAM6C,CAAC;AAElG,eAAO,MAAM,uCAAuC,yBAMuB,CAAC"}
1
+ {"version":3,"file":"operator-contract-schemas-project-planning.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-project-planning.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mCAAmC,yBAGV,CAAC;AA4FvC,eAAO,MAAM,6BAA6B,yBAwCR,CAAC;AAEnC,eAAO,MAAM,iCAAiC,yBAQ2E,CAAC;AAE1H,eAAO,MAAM,oCAAoC,yBAO4D,CAAC;AAE9G,eAAO,MAAM,wCAAwC,yBAUgD,CAAC;AAYtG,eAAO,MAAM,8BAA8B,yBAOyE,CAAC;AAErH,eAAO,MAAM,oCAAoC,yBAM0B,CAAC;AAE5E,eAAO,MAAM,kCAAkC,yBAQ0D,CAAC;AAE1G,eAAO,MAAM,wCAAwC,yBAKmC,CAAC;AAEzF,eAAO,MAAM,uCAAuC,yBAM6C,CAAC;AAElG,eAAO,MAAM,uCAAuC,yBAMuB,CAAC"}
@@ -80,6 +80,84 @@ const PROJECT_PLANNING_LANGUAGE_SCHEMA = objectSchema({
80
80
  updatedAt: NUMBER_SCHEMA,
81
81
  metadata: METADATA_SCHEMA,
82
82
  }, ['projectId', 'knowledgeSpaceId', 'terms', 'ambiguities', 'updatedAt'], { additionalProperties: true });
83
+ const PROJECT_WORK_PLAN_COUNTS_SCHEMA = objectSchema({
84
+ total: NUMBER_SCHEMA,
85
+ pending: NUMBER_SCHEMA,
86
+ in_progress: NUMBER_SCHEMA,
87
+ blocked: NUMBER_SCHEMA,
88
+ done: NUMBER_SCHEMA,
89
+ failed: NUMBER_SCHEMA,
90
+ cancelled: NUMBER_SCHEMA,
91
+ }, ['total', 'pending', 'in_progress', 'blocked', 'done', 'failed', 'cancelled'], { additionalProperties: false });
92
+ export const PROJECT_WORK_PLAN_TASK_SCHEMA = objectSchema({
93
+ taskId: STRING_SCHEMA,
94
+ projectId: STRING_SCHEMA,
95
+ knowledgeSpaceId: STRING_SCHEMA,
96
+ title: STRING_SCHEMA,
97
+ notes: STRING_SCHEMA,
98
+ owner: STRING_SCHEMA,
99
+ status: STRING_SCHEMA,
100
+ priority: NUMBER_SCHEMA,
101
+ order: NUMBER_SCHEMA,
102
+ source: STRING_SCHEMA,
103
+ tags: STRING_LIST_SCHEMA,
104
+ parentTaskId: STRING_SCHEMA,
105
+ chainId: STRING_SCHEMA,
106
+ phaseId: STRING_SCHEMA,
107
+ agentId: STRING_SCHEMA,
108
+ turnId: STRING_SCHEMA,
109
+ decisionId: STRING_SCHEMA,
110
+ sourceMessageId: STRING_SCHEMA,
111
+ linkedArtifactIds: STRING_LIST_SCHEMA,
112
+ linkedSourceIds: STRING_LIST_SCHEMA,
113
+ linkedNodeIds: STRING_LIST_SCHEMA,
114
+ originSurface: STRING_SCHEMA,
115
+ createdAt: NUMBER_SCHEMA,
116
+ updatedAt: NUMBER_SCHEMA,
117
+ completedAt: NUMBER_SCHEMA,
118
+ metadata: METADATA_SCHEMA,
119
+ }, [
120
+ 'taskId',
121
+ 'projectId',
122
+ 'knowledgeSpaceId',
123
+ 'title',
124
+ 'status',
125
+ 'order',
126
+ 'tags',
127
+ 'linkedArtifactIds',
128
+ 'linkedSourceIds',
129
+ 'linkedNodeIds',
130
+ 'createdAt',
131
+ 'updatedAt',
132
+ ], { additionalProperties: true });
133
+ export const PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA = objectSchema({
134
+ ok: BOOLEAN_SCHEMA,
135
+ projectId: STRING_SCHEMA,
136
+ knowledgeSpaceId: STRING_SCHEMA,
137
+ workPlanId: STRING_SCHEMA,
138
+ tasks: arraySchema(PROJECT_WORK_PLAN_TASK_SCHEMA),
139
+ counts: PROJECT_WORK_PLAN_COUNTS_SCHEMA,
140
+ updatedAt: NUMBER_SCHEMA,
141
+ }, ['ok', 'projectId', 'knowledgeSpaceId', 'workPlanId', 'tasks', 'counts', 'updatedAt'], { additionalProperties: true });
142
+ export const PROJECT_WORK_PLAN_TASK_OUTPUT_SCHEMA = objectSchema({
143
+ ok: BOOLEAN_SCHEMA,
144
+ projectId: STRING_SCHEMA,
145
+ knowledgeSpaceId: STRING_SCHEMA,
146
+ workPlanId: STRING_SCHEMA,
147
+ task: nullableSchema(PROJECT_WORK_PLAN_TASK_SCHEMA),
148
+ snapshot: PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA,
149
+ }, ['ok', 'projectId', 'knowledgeSpaceId', 'workPlanId', 'task', 'snapshot'], { additionalProperties: true });
150
+ export const PROJECT_WORK_PLAN_MUTATION_OUTPUT_SCHEMA = objectSchema({
151
+ ok: BOOLEAN_SCHEMA,
152
+ projectId: STRING_SCHEMA,
153
+ knowledgeSpaceId: STRING_SCHEMA,
154
+ workPlanId: STRING_SCHEMA,
155
+ task: PROJECT_WORK_PLAN_TASK_SCHEMA,
156
+ previousTask: PROJECT_WORK_PLAN_TASK_SCHEMA,
157
+ deletedTask: PROJECT_WORK_PLAN_TASK_SCHEMA,
158
+ clearedTaskIds: STRING_LIST_SCHEMA,
159
+ snapshot: PROJECT_WORK_PLAN_SNAPSHOT_SCHEMA,
160
+ }, ['ok', 'projectId', 'knowledgeSpaceId', 'workPlanId', 'snapshot'], { additionalProperties: true });
83
161
  const PROJECT_PLANNING_GAP_SCHEMA = objectSchema({
84
162
  id: STRING_SCHEMA,
85
163
  kind: STRING_SCHEMA,
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator-turn-helpers.d.ts","sourceRoot":"","sources":["../../../src/platform/core/orchestrator-turn-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator-turn-helpers.d.ts","sourceRoot":"","sources":["../../../src/platform/core/orchestrator-turn-helpers.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { logger } from '../utils/logger.js';
3
3
  import { emitPlanStrategySelected, emitToolReconciled, emitTurnCompleted } from '../runtime/emitters/index.js';
4
4
  import { buildSyntheticResult } from './tool-reconciliation.js';
5
5
  import { autoSpawnPendingItems } from './orchestrator-tool-runtime.js';
6
+ import { buildWrfcWorkflowRoutingPrompt, toolResultIndicatesAuthoritativeWrfcChain } from './wrfc-routing.js';
6
7
  const PROJECT_PRIMING_SIGNALS = new Set([
7
8
  'parallelism_keywords',
8
9
  'multi_sentence_actions',
@@ -54,6 +55,10 @@ export function prepareConversationForTurn(conversation, providerRegistry, text,
54
55
  else {
55
56
  conversation.addUserMessage(content ?? text);
56
57
  }
58
+ const wrfcRoutingPrompt = buildWrfcWorkflowRoutingPrompt(text);
59
+ if (wrfcRoutingPrompt) {
60
+ conversation.addSystemMessage(wrfcRoutingPrompt);
61
+ }
57
62
  const activePlan = planManager?.getActive(sessionId) ?? null;
58
63
  if (!activePlan) {
59
64
  const classification = classifyIntent(text);
@@ -97,29 +102,40 @@ export async function handleToolResponseOutcome(args) {
97
102
  const mode = tc.arguments.mode;
98
103
  return tc.name === 'agent' && (mode === 'spawn' || mode === 'batch-spawn');
99
104
  });
105
+ const spawnedAuthoritativeWrfcChain = spawnedAgents && results.some(toolResultIndicatesAuthoritativeWrfcChain);
100
106
  if (spawnedAgents || args.messageQueueLength > 0) {
101
107
  if (spawnedAgents) {
102
108
  const planManager = args.planManager;
103
109
  const activePlan = planManager?.getActive(args.sessionId) ?? null;
104
110
  if (activePlan) {
105
111
  const summary = planManager?.getSummary(activePlan) ?? '';
106
- const nextItems = planManager?.getNextItems(activePlan) ?? [];
107
- if (nextItems.length > 0) {
108
- const autoSpawnedDescs = autoSpawnPendingItems(args.conversation, activePlan, nextItems, args.agentManager, args.configManager, args.providerRegistry, args.runtimeBus, args.emitterContext(args.turnId), planManager);
109
- if (autoSpawnedDescs.length > 0) {
110
- args.conversation.addSystemMessage(`[Plan] Auto-spawned ${autoSpawnedDescs.length} agent(s) for remaining plan items: ${autoSpawnedDescs.join(', ')}. Plan progress: ${summary}.`);
112
+ if (spawnedAuthoritativeWrfcChain) {
113
+ args.conversation.addSystemMessage(`A WRFC owner chain is now the authoritative owner for this deliverable. Do not spawn additional root agents for review, testing, verification, or fixing this same work; inspect the WRFC chain status instead. Plan progress: ${summary}.`);
114
+ }
115
+ else {
116
+ const nextItems = planManager?.getNextItems(activePlan) ?? [];
117
+ if (nextItems.length > 0) {
118
+ const autoSpawnedDescs = autoSpawnPendingItems(args.conversation, activePlan, nextItems, args.agentManager, args.configManager, args.providerRegistry, args.runtimeBus, args.emitterContext(args.turnId), planManager);
119
+ if (autoSpawnedDescs.length > 0) {
120
+ args.conversation.addSystemMessage(`[Plan] Auto-spawned ${autoSpawnedDescs.length} agent(s) for remaining plan items: ${autoSpawnedDescs.join(', ')}. Plan progress: ${summary}.`);
121
+ }
122
+ else {
123
+ const nextDesc = nextItems.map(i => i.description).join(', ');
124
+ args.conversation.addSystemMessage(`Plan progress: ${summary}. Next items ready: ${nextDesc}. Continue spawning agents for remaining work.`);
125
+ }
111
126
  }
112
127
  else {
113
- const nextDesc = nextItems.map(i => i.description).join(', ');
114
- args.conversation.addSystemMessage(`Plan progress: ${summary}. Next items ready: ${nextDesc}. Continue spawning agents for remaining work.`);
128
+ args.conversation.addSystemMessage(`Plan progress: ${summary}. All items are accounted for.`);
115
129
  }
116
130
  }
117
- else {
118
- args.conversation.addSystemMessage(`Plan progress: ${summary}. All items are accounted for.`);
119
- }
120
131
  }
121
132
  else {
122
- args.conversation.addSystemMessage('You spawned an agent for part of the task. If there are remaining tasks, continue spawning agents now.');
133
+ if (spawnedAuthoritativeWrfcChain) {
134
+ args.conversation.addSystemMessage('A WRFC owner chain is now the authoritative owner for this deliverable. Do not spawn additional root agents for review, testing, verification, or fixing this same work; inspect the WRFC chain status instead.');
135
+ }
136
+ else {
137
+ args.conversation.addSystemMessage('You spawned an agent for part of the task. If there are remaining tasks, continue spawning agents now.');
138
+ }
123
139
  }
124
140
  }
125
141
  if (args.runtimeBus) {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator-turn-loop.d.ts","sourceRoot":"","sources":["../../../src/platform/core/orchestrator-turn-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator-turn-loop.d.ts","sourceRoot":"","sources":["../../../src/platform/core/orchestrator-turn-loop.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { HelperModel } from '../config/helper-model.js';
7
7
  import { logger } from '../utils/logger.js';
8
8
  import { emitMalformedToolUseWarning, handleFinalResponseOutcome, handleToolResponseOutcome, } from './orchestrator-turn-helpers.js';
9
9
  import { appendGoodVibesRuntimeAwarenessPrompt } from '../tools/goodvibes-runtime/index.js';
10
+ import { buildWrfcWorkflowRoutingPrompt } from './wrfc-routing.js';
10
11
  const AUTO_SPAWN_FALLBACK_DELAY_MS = 5_000;
11
12
  export async function executeOrchestratorTurnLoop(context) {
12
13
  const helperModel = context.helperModel;
@@ -108,11 +109,13 @@ export async function executeOrchestratorTurnLoop(context) {
108
109
  });
109
110
  }
110
111
  try {
112
+ const baseSystemPrompt = appendGoodVibesRuntimeAwarenessPrompt(context.getSystemPrompt());
113
+ const wrfcRoutingPrompt = buildWrfcWorkflowRoutingPrompt(context.text);
111
114
  response = await provider.chat({
112
115
  model: model.id,
113
116
  messages: context.conversation.getMessagesForLLM(),
114
117
  tools: toolDefinitions.length > 0 ? toolDefinitions : undefined,
115
- systemPrompt: appendGoodVibesRuntimeAwarenessPrompt(context.getSystemPrompt()),
118
+ systemPrompt: wrfcRoutingPrompt ? `${baseSystemPrompt}\n\n${wrfcRoutingPrompt}` : baseSystemPrompt,
116
119
  maxTokens: tokenLimits.maxOutputTokens,
117
120
  reasoningEffort: (() => {
118
121
  const configured = context.configManager.get('provider.reasoningEffort');
@@ -0,0 +1,5 @@
1
+ import type { ToolResult } from '../types/tools.js';
2
+ export declare function isWrfcWorkflowRequest(text: string): boolean;
3
+ export declare function buildWrfcWorkflowRoutingPrompt(text: string): string | null;
4
+ export declare function toolResultIndicatesAuthoritativeWrfcChain(result: ToolResult): boolean;
5
+ //# sourceMappingURL=wrfc-routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrfc-routing.d.ts","sourceRoot":"","sources":["../../../src/platform/core/wrfc-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM3D;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG1E;AAyBD,wBAAgB,yCAAyC,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAQrF"}
@@ -0,0 +1,51 @@
1
+ export function isWrfcWorkflowRequest(text) {
2
+ const normalized = text.trim().toLowerCase();
3
+ if (!/\bwrfc\b/.test(normalized))
4
+ return false;
5
+ if (/^(what|why|how|explain|describe|define)\b/.test(normalized))
6
+ return false;
7
+ return /\bwrfc\b.{0,80}\b(review|agent|build|make|implement|fix|test|verify|for)\b/.test(normalized)
8
+ || /\b(review|agent|build|make|implement|fix|test|verify)\b.{0,80}\bwrfc\b/.test(normalized);
9
+ }
10
+ export function buildWrfcWorkflowRoutingPrompt(text) {
11
+ if (!isWrfcWorkflowRequest(text))
12
+ return null;
13
+ return '[WRFC routing] The user is asking for WRFC-owned work. Use the agent tool to start exactly one WRFC owner chain with mode=spawn, template=engineer, reviewMode=wrfc. Do not answer by describing WRFC, and do not spawn reviewer/tester/verifier roots.';
14
+ }
15
+ function isRecord(value) {
16
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
17
+ }
18
+ function parseToolOutput(output) {
19
+ if (!output)
20
+ return null;
21
+ try {
22
+ const parsed = JSON.parse(output);
23
+ return isRecord(parsed) ? parsed : null;
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ function recordIsAuthoritativeWrfcOwner(record) {
30
+ if (record.orchestrationStopSignal === 'wrfc_owner_chain_started')
31
+ return true;
32
+ if (record.authoritativeWrfcChain === true && record.continueRootSpawning === false)
33
+ return true;
34
+ return record.wrfcRole === 'owner'
35
+ && typeof record.wrfcId === 'string'
36
+ && record.wrfcId.length > 0
37
+ && record.continueRootSpawning === false;
38
+ }
39
+ export function toolResultIndicatesAuthoritativeWrfcChain(result) {
40
+ if (!result.success)
41
+ return false;
42
+ const payload = parseToolOutput(result.output);
43
+ if (!payload)
44
+ return false;
45
+ if (recordIsAuthoritativeWrfcOwner(payload))
46
+ return true;
47
+ const agents = payload.agents;
48
+ if (!Array.isArray(agents))
49
+ return false;
50
+ return agents.some((agent) => isRecord(agent) && recordIsAuthoritativeWrfcOwner(agent));
51
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"project-planning-routes.d.ts","sourceRoot":"","sources":["../../../../src/platform/daemon/http/project-planning-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,sBAAsB,EAEvB,MAAM,0BAA0B,CAAC;AAElC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,UAAU,2BAA2B;IACnC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;IACxF,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC;CAC1D;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,2BAA2B;IAE3D,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YA2CtC,KAAK;YAML,QAAQ;YAMR,gBAAgB;CAK/B"}
1
+ {"version":3,"file":"project-planning-routes.d.ts","sourceRoot":"","sources":["../../../../src/platform/daemon/http/project-planning-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,sBAAsB,EAUvB,MAAM,0BAA0B,CAAC;AAElC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,UAAU,2BAA2B;IACnC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;IACxF,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC;CAC1D;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,2BAA2B;IAE3D,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YA8GtC,KAAK;YAML,QAAQ;YAMR,gBAAgB;CAK/B"}
@@ -35,6 +35,61 @@ export class ProjectPlanningRoutes {
35
35
  if (url.pathname === '/api/projects/planning/language' && req.method === 'POST') {
36
36
  return this.admin(req, async () => Response.json(await this.context.projectPlanningService.upsertLanguage(await this.readBody(req))));
37
37
  }
38
+ if (url.pathname === '/api/projects/planning/work-plan' && req.method === 'GET') {
39
+ return Response.json(await this.context.projectPlanningService.getWorkPlanSnapshot(readWorkPlanQuery(url)));
40
+ }
41
+ if (url.pathname === '/api/projects/planning/work-plan/tasks' && req.method === 'GET') {
42
+ return Response.json(await this.context.projectPlanningService.getWorkPlanSnapshot(readWorkPlanQuery(url)));
43
+ }
44
+ if (url.pathname === '/api/projects/planning/work-plan/tasks' && req.method === 'POST') {
45
+ return this.admin(req, async () => Response.json(await this.context.projectPlanningService.createWorkPlanTask({
46
+ ...readWorkPlanQuery(url),
47
+ ...(await this.readBody(req)),
48
+ })));
49
+ }
50
+ if (url.pathname === '/api/projects/planning/work-plan/tasks/reorder' && req.method === 'POST') {
51
+ return this.admin(req, async () => Response.json(await this.context.projectPlanningService.reorderWorkPlanTasks({
52
+ ...readWorkPlanQuery(url),
53
+ ...(await this.readBody(req)),
54
+ })));
55
+ }
56
+ if (url.pathname === '/api/projects/planning/work-plan/clear-completed' && req.method === 'POST') {
57
+ return this.admin(req, async () => Response.json(await this.context.projectPlanningService.clearCompletedWorkPlanTasks({
58
+ ...readWorkPlanQuery(url),
59
+ ...(await this.readOptionalBody(req)),
60
+ })));
61
+ }
62
+ const taskMatch = url.pathname.match(/^\/api\/projects\/planning\/work-plan\/tasks\/([^/]+)(?:\/status)?$/);
63
+ if (taskMatch) {
64
+ const taskId = decodeURIComponent(taskMatch[1]);
65
+ const isStatusRoute = url.pathname.endsWith('/status');
66
+ if (!isStatusRoute && req.method === 'GET') {
67
+ return Response.json(await this.context.projectPlanningService.getWorkPlanTask({
68
+ ...readWorkPlanQuery(url),
69
+ taskId,
70
+ }));
71
+ }
72
+ if (!isStatusRoute && req.method === 'PATCH') {
73
+ return this.admin(req, async () => Response.json(await this.context.projectPlanningService.updateWorkPlanTask({
74
+ ...readWorkPlanQuery(url),
75
+ ...(await this.readBody(req)),
76
+ taskId,
77
+ })));
78
+ }
79
+ if (!isStatusRoute && req.method === 'DELETE') {
80
+ return this.admin(req, async () => Response.json(await this.context.projectPlanningService.deleteWorkPlanTask({
81
+ ...readWorkPlanQuery(url),
82
+ taskId,
83
+ })));
84
+ }
85
+ if (isStatusRoute && req.method === 'POST') {
86
+ return this.admin(req, async () => Response.json(await this.context.projectPlanningService.setWorkPlanTaskStatus({
87
+ ...readWorkPlanQuery(url),
88
+ ...(await this.readBody(req)),
89
+ taskId,
90
+ })));
91
+ }
92
+ }
38
93
  return Response.json({ error: 'Unknown project planning route' }, { status: 404 });
39
94
  }
40
95
  catch (error) {
@@ -66,3 +121,15 @@ function readProjectSpaceFromUrl(url) {
66
121
  ...(url.searchParams.get('knowledgeSpaceId') ? { knowledgeSpaceId: url.searchParams.get('knowledgeSpaceId') } : {}),
67
122
  };
68
123
  }
124
+ function readWorkPlanQuery(url) {
125
+ const limit = url.searchParams.get('limit');
126
+ return {
127
+ ...readProjectSpaceFromUrl(url),
128
+ ...(url.searchParams.get('workPlanId') ? { workPlanId: url.searchParams.get('workPlanId') } : {}),
129
+ ...(url.searchParams.get('status') ? { status: url.searchParams.get('status') } : {}),
130
+ ...(url.searchParams.get('parentTaskId') ? { parentTaskId: url.searchParams.get('parentTaskId') } : {}),
131
+ ...(url.searchParams.get('chainId') ? { chainId: url.searchParams.get('chainId') } : {}),
132
+ ...(url.searchParams.get('owner') ? { owner: url.searchParams.get('owner') } : {}),
133
+ ...(limit ? { limit: Number(limit) } : {}),
134
+ };
135
+ }
@@ -22,7 +22,7 @@ export { KnowledgeSemanticService, createWebKnowledgeGapRepairer, createProvider
22
22
  export type { KnowledgeSemanticAnswer, KnowledgeSemanticAnswerInput, KnowledgeSemanticAnswerResult, KnowledgeSemanticEnrichmentResult, KnowledgeSemanticExtraction, KnowledgeSemanticFactInput, KnowledgeSemanticFactKind, KnowledgeSemanticGapRepairer, KnowledgeSemanticGapRepairRequest, KnowledgeSemanticGapRepairResult, KnowledgeSemanticGapInput, KnowledgeSemanticLlm, KnowledgeSemanticLlmAnswer, KnowledgeSemanticSelfImproveInput, KnowledgeSemanticSelfImproveResult, KnowledgeSemanticServiceOptions, WebGapRepairOptions, } from './semantic/index.js';
23
23
  export { HomeGraphService, HOME_GRAPH_KNOWLEDGE_EXTENSION, HOME_GRAPH_NODE_KINDS, HOME_GRAPH_RELATIONS } from './home-graph/index.js';
24
24
  export { ProjectPlanningService, evaluateProjectPlanningReadiness, projectPlanningCanonicalUri, projectPlanningProjectIdFromPath, projectPlanningSourceId, resolveProjectPlanningSpace, } from './project-planning/index.js';
25
- export type { ProjectPlanningAgentAssignment, ProjectPlanningAmbiguity, ProjectPlanningDecision, ProjectPlanningDecisionRecordInput, ProjectPlanningDecisionResult, ProjectPlanningDecisionsResult, ProjectPlanningDecisionStatus, ProjectPlanningDependency, ProjectPlanningEvaluateInput, ProjectPlanningEvaluation, ProjectPlanningGap, ProjectPlanningGapKind, ProjectPlanningGapSeverity, ProjectPlanningGateStatus, ProjectPlanningLanguageArtifact, ProjectPlanningLanguageResult, ProjectPlanningLanguageUpsertInput, ProjectPlanningQuestion, ProjectPlanningQuestionStatus, ProjectPlanningReadiness, ProjectPlanningServiceOptions, ProjectPlanningSpaceInput, ProjectPlanningState, ProjectPlanningStateResult, ProjectPlanningStateUpsertInput, ProjectPlanningStatus, ProjectPlanningTask, ProjectPlanningTaskStatus, ProjectPlanningTerm, ProjectPlanningVerificationGate, } from './project-planning/index.js';
25
+ export type { ProjectPlanningAgentAssignment, ProjectPlanningAmbiguity, ProjectPlanningDecision, ProjectPlanningDecisionRecordInput, ProjectPlanningDecisionResult, ProjectPlanningDecisionsResult, ProjectPlanningDecisionStatus, ProjectPlanningDependency, ProjectPlanningEvaluateInput, ProjectPlanningEvaluation, ProjectPlanningGap, ProjectPlanningGapKind, ProjectPlanningGapSeverity, ProjectPlanningGateStatus, ProjectPlanningLanguageArtifact, ProjectPlanningLanguageResult, ProjectPlanningLanguageUpsertInput, ProjectPlanningQuestion, ProjectPlanningQuestionStatus, ProjectPlanningReadiness, ProjectPlanningServiceOptions, ProjectPlanningSpaceInput, ProjectPlanningState, ProjectPlanningStateResult, ProjectPlanningStateUpsertInput, ProjectPlanningStatus, ProjectPlanningTask, ProjectPlanningTaskStatus, ProjectPlanningTerm, ProjectPlanningVerificationGate, ProjectWorkPlanArtifact, ProjectWorkPlanClearCompletedInput, ProjectWorkPlanCounts, ProjectWorkPlanMutationResult, ProjectWorkPlanSnapshot, ProjectWorkPlanTask, ProjectWorkPlanTaskCreateInput, ProjectWorkPlanTaskDeleteInput, ProjectWorkPlanTaskGetInput, ProjectWorkPlanTaskListInput, ProjectWorkPlanTaskMutationSource, ProjectWorkPlanTaskReorderInput, ProjectWorkPlanTaskResult, ProjectWorkPlanTaskStatus, ProjectWorkPlanTaskStatusInput, ProjectWorkPlanTaskUpdateInput, } from './project-planning/index.js';
26
26
  export type { HomeGraphAskInput, HomeGraphAskResult, HomeGraphDevicePassportResult, HomeGraphExport, HomeGraphGeneratedPagesSummary, HomeGraphIngestArtifactInput, HomeGraphIngestNoteInput, HomeGraphIngestResult, HomeGraphIngestUrlInput, HomeGraphKnowledgeTarget, HomeGraphLinkInput, HomeGraphLinkResult, HomeGraphMapEdge, HomeGraphMapInput, HomeGraphMapNode, HomeGraphMapResult, HomeGraphNodeKind, HomeGraphObjectInput, HomeGraphObjectKind, HomeGraphPageAutomationOptions, HomeGraphPageListResult, HomeGraphProjectionInput, HomeGraphProjectionResult, HomeGraphReindexResult, HomeGraphRelation, HomeGraphResetInput, HomeGraphResetResult, HomeGraphReviewInput, HomeGraphSnapshotInput, HomeGraphStatus, HomeGraphSyncResult, } from './home-graph/index.js';
27
27
  export { createKnowledgeApi } from './knowledge-api.js';
28
28
  export { createKnowledgeSchema, getKnowledgeSchemaStatements, knowledgeNowMs, loadKnowledgeStoreSnapshot, parseKnowledgeJsonValue, renderKnowledgeSchemaSql, resolveKnowledgeDbPathFromControlPlaneDir, stabilizeKnowledgeText, uniqKnowledgeValues, } from './persistence.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { ProjectPlanningSpaceInput } from './types.js';
2
2
  export declare const PROJECT_PLANNING_CONNECTOR_ID = "goodvibes-project-planning";
3
3
  export declare const PROJECT_PLANNING_TAG = "project-planning";
4
- export type ProjectPlanningArtifactKind = 'state' | 'decision' | 'language';
4
+ export type ProjectPlanningArtifactKind = 'state' | 'decision' | 'language' | 'work-plan';
5
5
  export interface ResolvedProjectPlanningSpace {
6
6
  readonly projectId: string;
7
7
  readonly knowledgeSpaceId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/platform/knowledge/project-planning/helpers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,6BAA6B,+BAA+B,CAAC;AAC1E,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED,wBAAgB,2BAA2B,CACzC,KAAK,GAAE,yBAA8B,EACrC,gBAAgB,SAAY,GAC3B,4BAA4B,CAe9B;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,2BAA2B,EACjC,EAAE,EAAE,MAAM,GACT,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,2BAA2B,EACjC,EAAE,EAAE,MAAM,GACT,MAAM,CAGR;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAWxG;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIlF"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/platform/knowledge/project-planning/helpers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,yBAAyB,EAG1B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,6BAA6B,+BAA+B,CAAC;AAC1E,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAE1F,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED,wBAAgB,2BAA2B,CACzC,KAAK,GAAE,yBAA8B,EACrC,gBAAgB,SAAY,GAC3B,4BAA4B,CAe9B;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,2BAA2B,EACjC,EAAE,EAAE,MAAM,GACT,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,2BAA2B,EACjC,EAAE,EAAE,MAAM,GACT,MAAM,CAGR;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAexG;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIlF"}
@@ -48,6 +48,10 @@ export function projectPlanningArtifactSummary(kind, value) {
48
48
  const decision = value;
49
49
  return decision.decision ? `${decision.title ?? 'Decision'}: ${decision.decision}` : 'Project planning decision record.';
50
50
  }
51
+ if (kind === 'work-plan') {
52
+ const workPlan = value;
53
+ return `Project work plan with ${workPlan.tasks?.length ?? 0} tasks.`;
54
+ }
51
55
  const language = value;
52
56
  return `Project language artifact with ${language.terms?.length ?? 0} terms and ${language.ambiguities?.length ?? 0} resolved ambiguities.`;
53
57
  }