@pellux/goodvibes-sdk 0.26.10 → 0.27.0
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.
- package/dist/_internal/contracts/artifacts/operator-contract.json +4351 -5
- package/dist/_internal/contracts/generated/foundation-metadata.d.ts +2 -2
- package/dist/_internal/contracts/generated/foundation-metadata.js +2 -2
- package/dist/_internal/contracts/generated/operator-contract.d.ts.map +1 -1
- package/dist/_internal/contracts/generated/operator-contract.js +4351 -5
- package/dist/_internal/contracts/generated/operator-method-ids.d.ts +1 -1
- package/dist/_internal/contracts/generated/operator-method-ids.d.ts.map +1 -1
- package/dist/_internal/contracts/generated/operator-method-ids.js +10 -0
- package/dist/_internal/daemon/context.d.ts +1 -0
- package/dist/_internal/daemon/context.d.ts.map +1 -1
- package/dist/_internal/daemon/knowledge-route-types.d.ts +2 -1
- package/dist/_internal/daemon/knowledge-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/knowledge-routes.d.ts +1 -1
- package/dist/_internal/daemon/knowledge-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/knowledge-routes.js +19 -3
- package/dist/_internal/daemon/operator.d.ts +1 -1
- package/dist/_internal/daemon/operator.d.ts.map +1 -1
- package/dist/_internal/daemon/operator.js +2 -0
- package/dist/_internal/platform/control-plane/method-catalog-homegraph.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/method-catalog-homegraph.js +12 -2
- package/dist/_internal/platform/control-plane/method-catalog-knowledge.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/method-catalog-knowledge.js +117 -1
- package/dist/_internal/platform/control-plane/operator-contract-schemas-knowledge.d.ts +3 -0
- package/dist/_internal/platform/control-plane/operator-contract-schemas-knowledge.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/operator-contract-schemas-knowledge.js +48 -3
- package/dist/_internal/platform/control-plane/operator-contract-schemas-project-planning.d.ts +8 -0
- package/dist/_internal/platform/control-plane/operator-contract-schemas-project-planning.d.ts.map +1 -0
- package/dist/_internal/platform/control-plane/operator-contract-schemas-project-planning.js +135 -0
- package/dist/_internal/platform/control-plane/routes/operator.d.ts +1 -1
- package/dist/_internal/platform/control-plane/routes/operator.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/routes/operator.js +2 -0
- package/dist/_internal/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/facade-composition.js +2 -0
- package/dist/_internal/platform/daemon/facade-types.d.ts +2 -1
- package/dist/_internal/platform/daemon/facade-types.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/home-graph-routes.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/home-graph-routes.js +21 -0
- package/dist/_internal/platform/daemon/http/project-planning-routes.d.ts +18 -0
- package/dist/_internal/platform/daemon/http/project-planning-routes.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/http/project-planning-routes.js +68 -0
- package/dist/_internal/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router-route-contexts.js +1 -0
- package/dist/_internal/platform/daemon/http/router.d.ts +4 -1
- package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router.js +18 -0
- package/dist/_internal/platform/daemon/types.d.ts +2 -1
- package/dist/_internal/platform/daemon/types.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/generated-projections.d.ts +38 -0
- package/dist/_internal/platform/knowledge/generated-projections.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/generated-projections.js +106 -0
- package/dist/_internal/platform/knowledge/home-graph/generated-pages.d.ts +29 -0
- package/dist/_internal/platform/knowledge/home-graph/generated-pages.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/home-graph/generated-pages.js +296 -0
- package/dist/_internal/platform/knowledge/home-graph/helpers.d.ts +4 -1
- package/dist/_internal/platform/knowledge/home-graph/helpers.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/helpers.js +21 -2
- package/dist/_internal/platform/knowledge/home-graph/index.d.ts +1 -1
- package/dist/_internal/platform/knowledge/home-graph/index.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/rendering.d.ts +5 -0
- package/dist/_internal/platform/knowledge/home-graph/rendering.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/rendering.js +32 -11
- package/dist/_internal/platform/knowledge/home-graph/search.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/search.js +95 -11
- package/dist/_internal/platform/knowledge/home-graph/service.d.ts +2 -2
- package/dist/_internal/platform/knowledge/home-graph/service.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/service.js +46 -93
- package/dist/_internal/platform/knowledge/home-graph/space-selection.d.ts +7 -0
- package/dist/_internal/platform/knowledge/home-graph/space-selection.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/home-graph/space-selection.js +36 -0
- package/dist/_internal/platform/knowledge/home-graph/types.d.ts +33 -2
- package/dist/_internal/platform/knowledge/home-graph/types.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/types.js +2 -0
- package/dist/_internal/platform/knowledge/index.d.ts +9 -3
- package/dist/_internal/platform/knowledge/index.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/index.js +4 -1
- package/dist/_internal/platform/knowledge/knowledge-api.d.ts +2 -0
- package/dist/_internal/platform/knowledge/knowledge-api.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/knowledge-api.js +1 -0
- package/dist/_internal/platform/knowledge/map.d.ts +18 -0
- package/dist/_internal/platform/knowledge/map.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/map.js +235 -0
- package/dist/_internal/platform/knowledge/project-planning/helpers.d.ts +17 -0
- package/dist/_internal/platform/knowledge/project-planning/helpers.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/project-planning/helpers.js +65 -0
- package/dist/_internal/platform/knowledge/project-planning/index.d.ts +6 -0
- package/dist/_internal/platform/knowledge/project-planning/index.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/project-planning/index.js +3 -0
- package/dist/_internal/platform/knowledge/project-planning/readiness.d.ts +3 -0
- package/dist/_internal/platform/knowledge/project-planning/readiness.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/project-planning/readiness.js +124 -0
- package/dist/_internal/platform/knowledge/project-planning/service.d.ts +25 -0
- package/dist/_internal/platform/knowledge/project-planning/service.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/project-planning/service.js +259 -0
- package/dist/_internal/platform/knowledge/project-planning/types.d.ts +203 -0
- package/dist/_internal/platform/knowledge/project-planning/types.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/project-planning/types.js +1 -0
- package/dist/_internal/platform/knowledge/projection-utils.d.ts +16 -0
- package/dist/_internal/platform/knowledge/projection-utils.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/projection-utils.js +48 -0
- package/dist/_internal/platform/knowledge/projections.d.ts +1 -0
- package/dist/_internal/platform/knowledge/projections.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/projections.js +52 -58
- package/dist/_internal/platform/knowledge/service.d.ts +7 -1
- package/dist/_internal/platform/knowledge/service.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/service.js +11 -0
- package/dist/_internal/platform/knowledge/spaces.d.ts +4 -0
- package/dist/_internal/platform/knowledge/spaces.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/spaces.js +10 -0
- package/dist/_internal/platform/knowledge/types.d.ts +35 -0
- package/dist/_internal/platform/knowledge/types.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/services.d.ts +2 -1
- package/dist/_internal/platform/runtime/services.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/services.js +5 -1
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { knowledgeSpaceMetadata, normalizeProjectId, } from '../spaces.js';
|
|
2
|
+
import { KnowledgeStore } from '../store.js';
|
|
3
|
+
import { PROJECT_PLANNING_CONNECTOR_ID, PROJECT_PLANNING_TAG, projectPlanningArtifactSummary, projectPlanningCanonicalUri, projectPlanningSourceId, readPlanningMetadataObject, resolveProjectPlanningSpace, stablePlanningId, } from './helpers.js';
|
|
4
|
+
import { evaluateProjectPlanningReadiness } from './readiness.js';
|
|
5
|
+
export class ProjectPlanningService {
|
|
6
|
+
store;
|
|
7
|
+
defaultProjectId;
|
|
8
|
+
constructor(store, options = {}) {
|
|
9
|
+
this.store = store;
|
|
10
|
+
this.defaultProjectId = normalizeProjectId(options.defaultProjectId ?? 'default');
|
|
11
|
+
}
|
|
12
|
+
async status(input = {}) {
|
|
13
|
+
await this.store.init();
|
|
14
|
+
const space = this.resolveSpace(input);
|
|
15
|
+
const sources = this.sourcesForSpace(space.knowledgeSpaceId);
|
|
16
|
+
return {
|
|
17
|
+
ok: true,
|
|
18
|
+
projectId: space.projectId,
|
|
19
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
20
|
+
passiveOnly: true,
|
|
21
|
+
counts: {
|
|
22
|
+
states: sources.filter((source) => artifactKind(source) === 'state').length,
|
|
23
|
+
decisions: sources.filter((source) => artifactKind(source) === 'decision').length,
|
|
24
|
+
languageArtifacts: sources.filter((source) => artifactKind(source) === 'language').length,
|
|
25
|
+
},
|
|
26
|
+
capabilities: [
|
|
27
|
+
'project-scoped-storage',
|
|
28
|
+
'planning-state-validation',
|
|
29
|
+
'project-language-artifacts',
|
|
30
|
+
'decision-records',
|
|
31
|
+
'agent-task-graph-metadata',
|
|
32
|
+
'passive-daemon-only',
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async getState(input = {}) {
|
|
37
|
+
await this.store.init();
|
|
38
|
+
const space = this.resolveSpace(input);
|
|
39
|
+
const planningId = normalizePlanningId(input.planningId);
|
|
40
|
+
const source = this.getArtifactSource(space.knowledgeSpaceId, 'state', planningId);
|
|
41
|
+
const state = source ? readState(source) : null;
|
|
42
|
+
return {
|
|
43
|
+
ok: true,
|
|
44
|
+
projectId: space.projectId,
|
|
45
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
46
|
+
state,
|
|
47
|
+
...(source ? { source } : {}),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async upsertState(input) {
|
|
51
|
+
await this.store.init();
|
|
52
|
+
const space = this.resolveSpace(input);
|
|
53
|
+
const state = normalizeState(input.state, space.projectId, space.knowledgeSpaceId);
|
|
54
|
+
const evaluation = evaluateProjectPlanningReadiness(state);
|
|
55
|
+
const normalized = evaluation.state;
|
|
56
|
+
const source = await this.upsertArtifactSource(space, 'state', normalized.id, normalized);
|
|
57
|
+
return {
|
|
58
|
+
ok: true,
|
|
59
|
+
projectId: space.projectId,
|
|
60
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
61
|
+
state: normalized,
|
|
62
|
+
source,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
async evaluate(input = {}) {
|
|
66
|
+
await this.store.init();
|
|
67
|
+
const space = this.resolveSpace(input);
|
|
68
|
+
if (input.state) {
|
|
69
|
+
return evaluateProjectPlanningReadiness(normalizeState(input.state, space.projectId, space.knowledgeSpaceId));
|
|
70
|
+
}
|
|
71
|
+
const stateResult = await this.getState({ ...space, planningId: input.planningId });
|
|
72
|
+
const state = stateResult.state ?? normalizeState({}, space.projectId, space.knowledgeSpaceId);
|
|
73
|
+
return evaluateProjectPlanningReadiness(state);
|
|
74
|
+
}
|
|
75
|
+
async listDecisions(input = {}) {
|
|
76
|
+
await this.store.init();
|
|
77
|
+
const space = this.resolveSpace(input);
|
|
78
|
+
const decisions = this.sourcesForSpace(space.knowledgeSpaceId)
|
|
79
|
+
.filter((source) => artifactKind(source) === 'decision')
|
|
80
|
+
.map(readDecision)
|
|
81
|
+
.filter((decision) => decision !== null)
|
|
82
|
+
.sort((a, b) => (b.updatedAt ?? b.createdAt ?? 0) - (a.updatedAt ?? a.createdAt ?? 0));
|
|
83
|
+
return {
|
|
84
|
+
ok: true,
|
|
85
|
+
projectId: space.projectId,
|
|
86
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
87
|
+
decisions,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
async recordDecision(input) {
|
|
91
|
+
await this.store.init();
|
|
92
|
+
const space = this.resolveSpace(input);
|
|
93
|
+
const now = Date.now();
|
|
94
|
+
const decision = {
|
|
95
|
+
id: input.decision.id ?? stablePlanningId('decision', input.decision.title),
|
|
96
|
+
title: input.decision.title.trim(),
|
|
97
|
+
...(input.decision.context ? { context: input.decision.context } : {}),
|
|
98
|
+
decision: input.decision.decision.trim(),
|
|
99
|
+
...(input.decision.alternatives ? { alternatives: [...input.decision.alternatives] } : {}),
|
|
100
|
+
...(input.decision.reasoning ? { reasoning: input.decision.reasoning } : {}),
|
|
101
|
+
...(input.decision.consequences ? { consequences: [...input.decision.consequences] } : {}),
|
|
102
|
+
status: input.decision.status ?? 'accepted',
|
|
103
|
+
createdAt: input.decision.createdAt ?? now,
|
|
104
|
+
updatedAt: now,
|
|
105
|
+
...(input.decision.metadata ? { metadata: { ...input.decision.metadata } } : {}),
|
|
106
|
+
};
|
|
107
|
+
const source = await this.upsertArtifactSource(space, 'decision', decision.id, decision);
|
|
108
|
+
return {
|
|
109
|
+
ok: true,
|
|
110
|
+
projectId: space.projectId,
|
|
111
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
112
|
+
decision,
|
|
113
|
+
source,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
async getLanguage(input = {}) {
|
|
117
|
+
await this.store.init();
|
|
118
|
+
const space = this.resolveSpace(input);
|
|
119
|
+
const source = this.getArtifactSource(space.knowledgeSpaceId, 'language', 'current');
|
|
120
|
+
const language = source ? readLanguage(source) : null;
|
|
121
|
+
return {
|
|
122
|
+
ok: true,
|
|
123
|
+
projectId: space.projectId,
|
|
124
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
125
|
+
language,
|
|
126
|
+
...(source ? { source } : {}),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async upsertLanguage(input) {
|
|
130
|
+
await this.store.init();
|
|
131
|
+
const space = this.resolveSpace(input);
|
|
132
|
+
const now = Date.now();
|
|
133
|
+
const existing = await this.getLanguage(space);
|
|
134
|
+
const language = {
|
|
135
|
+
projectId: space.projectId,
|
|
136
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
137
|
+
terms: input.language.terms ? [...input.language.terms] : existing.language?.terms ?? [],
|
|
138
|
+
ambiguities: input.language.ambiguities ? [...input.language.ambiguities] : existing.language?.ambiguities ?? [],
|
|
139
|
+
...(input.language.examples ? { examples: [...input.language.examples] } : existing.language?.examples ? { examples: existing.language.examples } : {}),
|
|
140
|
+
updatedAt: now,
|
|
141
|
+
metadata: {
|
|
142
|
+
...(existing.language?.metadata ?? {}),
|
|
143
|
+
...(input.language.metadata ?? {}),
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
const source = await this.upsertArtifactSource(space, 'language', 'current', language);
|
|
147
|
+
return {
|
|
148
|
+
ok: true,
|
|
149
|
+
projectId: space.projectId,
|
|
150
|
+
knowledgeSpaceId: space.knowledgeSpaceId,
|
|
151
|
+
language,
|
|
152
|
+
source,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
resolveSpace(input = {}) {
|
|
156
|
+
return resolveProjectPlanningSpace(input, this.defaultProjectId);
|
|
157
|
+
}
|
|
158
|
+
sourcesForSpace(spaceId) {
|
|
159
|
+
return this.store.listSources(10_000).filter((source) => {
|
|
160
|
+
const metadata = source.metadata ?? {};
|
|
161
|
+
return metadata.projectPlanning === true && metadata.knowledgeSpaceId === spaceId;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
getArtifactSource(spaceId, kind, id) {
|
|
165
|
+
const sourceId = projectPlanningSourceId(spaceId, kind, id);
|
|
166
|
+
return this.store.getSource(sourceId) ?? this.store.getSourceByCanonicalUri(projectPlanningCanonicalUri(spaceId, kind, id));
|
|
167
|
+
}
|
|
168
|
+
async upsertArtifactSource(space, kind, id, value) {
|
|
169
|
+
const spaceId = space.knowledgeSpaceId;
|
|
170
|
+
return this.store.upsertSource({
|
|
171
|
+
id: projectPlanningSourceId(spaceId, kind, id),
|
|
172
|
+
connectorId: PROJECT_PLANNING_CONNECTOR_ID,
|
|
173
|
+
sourceType: 'dataset',
|
|
174
|
+
title: titleForArtifact(kind, value),
|
|
175
|
+
canonicalUri: projectPlanningCanonicalUri(spaceId, kind, id),
|
|
176
|
+
summary: projectPlanningArtifactSummary(kind, value),
|
|
177
|
+
tags: [PROJECT_PLANNING_TAG, `project-planning:${kind}`],
|
|
178
|
+
status: 'indexed',
|
|
179
|
+
metadata: knowledgeSpaceMetadata(spaceId, {
|
|
180
|
+
projectPlanning: true,
|
|
181
|
+
planningArtifactKind: kind,
|
|
182
|
+
planningArtifactId: id,
|
|
183
|
+
projectId: space.projectId,
|
|
184
|
+
value,
|
|
185
|
+
}),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
function normalizeState(input, projectId, knowledgeSpaceId) {
|
|
190
|
+
const now = Date.now();
|
|
191
|
+
const id = normalizePlanningId(input.id);
|
|
192
|
+
return {
|
|
193
|
+
id,
|
|
194
|
+
projectId,
|
|
195
|
+
knowledgeSpaceId,
|
|
196
|
+
goal: typeof input.goal === 'string' ? input.goal : '',
|
|
197
|
+
...(typeof input.scope === 'string' ? { scope: input.scope } : {}),
|
|
198
|
+
knownContext: arrayOfObjectsOrStrings(input.knownContext),
|
|
199
|
+
openQuestions: arrayOfObjects(input.openQuestions),
|
|
200
|
+
answeredQuestions: arrayOfObjects(input.answeredQuestions),
|
|
201
|
+
decisions: arrayOfObjects(input.decisions),
|
|
202
|
+
assumptions: arrayOfObjectsOrStrings(input.assumptions),
|
|
203
|
+
constraints: arrayOfObjectsOrStrings(input.constraints),
|
|
204
|
+
risks: arrayOfObjectsOrStrings(input.risks),
|
|
205
|
+
tasks: arrayOfObjects(input.tasks),
|
|
206
|
+
dependencies: arrayOfObjects(input.dependencies),
|
|
207
|
+
verificationGates: arrayOfObjects(input.verificationGates),
|
|
208
|
+
agentAssignments: arrayOfObjects(input.agentAssignments),
|
|
209
|
+
readiness: input.readiness ?? 'not-ready',
|
|
210
|
+
executionApproved: input.executionApproved === true,
|
|
211
|
+
createdAt: typeof input.createdAt === 'number' ? input.createdAt : now,
|
|
212
|
+
updatedAt: now,
|
|
213
|
+
metadata: readPlanningMetadataObject(input.metadata),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
function normalizePlanningId(value) {
|
|
217
|
+
return typeof value === 'string' && value.trim().length > 0
|
|
218
|
+
? stablePlanningId('plan', value)
|
|
219
|
+
: 'current';
|
|
220
|
+
}
|
|
221
|
+
function arrayOfObjects(value) {
|
|
222
|
+
if (!Array.isArray(value))
|
|
223
|
+
return [];
|
|
224
|
+
return value.filter((entry) => !!entry && typeof entry === 'object' && !Array.isArray(entry));
|
|
225
|
+
}
|
|
226
|
+
function arrayOfObjectsOrStrings(value) {
|
|
227
|
+
if (!Array.isArray(value))
|
|
228
|
+
return [];
|
|
229
|
+
return value.flatMap((entry) => {
|
|
230
|
+
if (typeof entry === 'string')
|
|
231
|
+
return [entry];
|
|
232
|
+
if (entry && typeof entry === 'object' && 'text' in entry && typeof entry.text === 'string')
|
|
233
|
+
return [entry.text];
|
|
234
|
+
return [];
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
function artifactKind(source) {
|
|
238
|
+
const kind = source.metadata.planningArtifactKind;
|
|
239
|
+
return kind === 'state' || kind === 'decision' || kind === 'language' ? kind : null;
|
|
240
|
+
}
|
|
241
|
+
function readState(source) {
|
|
242
|
+
const value = source.metadata.value;
|
|
243
|
+
return value && typeof value === 'object' ? value : null;
|
|
244
|
+
}
|
|
245
|
+
function readDecision(source) {
|
|
246
|
+
const value = source.metadata.value;
|
|
247
|
+
return value && typeof value === 'object' ? value : null;
|
|
248
|
+
}
|
|
249
|
+
function readLanguage(source) {
|
|
250
|
+
const value = source.metadata.value;
|
|
251
|
+
return value && typeof value === 'object' ? value : null;
|
|
252
|
+
}
|
|
253
|
+
function titleForArtifact(kind, value) {
|
|
254
|
+
if (kind === 'state')
|
|
255
|
+
return `Planning: ${value.goal || 'Current plan'}`;
|
|
256
|
+
if (kind === 'decision')
|
|
257
|
+
return `Decision: ${value.title}`;
|
|
258
|
+
return 'Project Language';
|
|
259
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import type { KnowledgeSourceRecord } from '../types.js';
|
|
2
|
+
export type ProjectPlanningReadiness = 'not-ready' | 'needs-user-input' | 'executable';
|
|
3
|
+
export type ProjectPlanningQuestionStatus = 'open' | 'answered' | 'skipped';
|
|
4
|
+
export type ProjectPlanningTaskStatus = 'pending' | 'in-progress' | 'blocked' | 'completed' | 'deferred';
|
|
5
|
+
export type ProjectPlanningGateStatus = 'pending' | 'passed' | 'failed' | 'skipped';
|
|
6
|
+
export type ProjectPlanningDecisionStatus = 'proposed' | 'accepted' | 'superseded' | 'rejected';
|
|
7
|
+
export type ProjectPlanningGapSeverity = 'blocking' | 'advisory';
|
|
8
|
+
export type ProjectPlanningGapKind = 'missing-goal' | 'missing-scope' | 'open-question' | 'ambiguous-language' | 'missing-tasks' | 'missing-dependencies' | 'missing-verification' | 'unapproved-execution';
|
|
9
|
+
export interface ProjectPlanningSpaceInput {
|
|
10
|
+
readonly projectId?: string;
|
|
11
|
+
readonly knowledgeSpaceId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ProjectPlanningQuestion {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly prompt: string;
|
|
16
|
+
readonly whyItMatters?: string;
|
|
17
|
+
readonly recommendedAnswer?: string;
|
|
18
|
+
readonly consequence?: string;
|
|
19
|
+
readonly status?: ProjectPlanningQuestionStatus;
|
|
20
|
+
readonly answer?: string;
|
|
21
|
+
readonly answeredAt?: number;
|
|
22
|
+
readonly metadata?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface ProjectPlanningDecision {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly title: string;
|
|
27
|
+
readonly context?: string;
|
|
28
|
+
readonly decision: string;
|
|
29
|
+
readonly alternatives?: readonly string[];
|
|
30
|
+
readonly reasoning?: string;
|
|
31
|
+
readonly consequences?: readonly string[];
|
|
32
|
+
readonly status?: ProjectPlanningDecisionStatus;
|
|
33
|
+
readonly createdAt?: number;
|
|
34
|
+
readonly updatedAt?: number;
|
|
35
|
+
readonly metadata?: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
export interface ProjectPlanningTerm {
|
|
38
|
+
readonly term: string;
|
|
39
|
+
readonly definition: string;
|
|
40
|
+
readonly avoid?: readonly string[];
|
|
41
|
+
readonly aliases?: readonly string[];
|
|
42
|
+
readonly relationships?: readonly string[];
|
|
43
|
+
readonly examples?: readonly string[];
|
|
44
|
+
readonly metadata?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
export interface ProjectPlanningAmbiguity {
|
|
47
|
+
readonly phrase: string;
|
|
48
|
+
readonly resolution: string;
|
|
49
|
+
readonly examples?: readonly string[];
|
|
50
|
+
readonly resolvedAt?: number;
|
|
51
|
+
readonly metadata?: Record<string, unknown>;
|
|
52
|
+
}
|
|
53
|
+
export interface ProjectPlanningLanguageArtifact {
|
|
54
|
+
readonly projectId: string;
|
|
55
|
+
readonly knowledgeSpaceId: string;
|
|
56
|
+
readonly terms: readonly ProjectPlanningTerm[];
|
|
57
|
+
readonly ambiguities: readonly ProjectPlanningAmbiguity[];
|
|
58
|
+
readonly examples?: readonly string[];
|
|
59
|
+
readonly updatedAt: number;
|
|
60
|
+
readonly metadata?: Record<string, unknown>;
|
|
61
|
+
}
|
|
62
|
+
export interface ProjectPlanningTask {
|
|
63
|
+
readonly id: string;
|
|
64
|
+
readonly title: string;
|
|
65
|
+
readonly why?: string;
|
|
66
|
+
readonly status?: ProjectPlanningTaskStatus;
|
|
67
|
+
readonly dependencies?: readonly string[];
|
|
68
|
+
readonly likelyFiles?: readonly string[];
|
|
69
|
+
readonly verification?: readonly string[];
|
|
70
|
+
readonly canRunConcurrently?: boolean;
|
|
71
|
+
readonly needsReview?: boolean;
|
|
72
|
+
readonly blockedOnUserInput?: boolean;
|
|
73
|
+
readonly recommendedAgent?: 'explorer' | 'worker' | 'none' | string;
|
|
74
|
+
readonly metadata?: Record<string, unknown>;
|
|
75
|
+
}
|
|
76
|
+
export interface ProjectPlanningDependency {
|
|
77
|
+
readonly fromTaskId: string;
|
|
78
|
+
readonly toTaskId: string;
|
|
79
|
+
readonly reason?: string;
|
|
80
|
+
readonly metadata?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
export interface ProjectPlanningVerificationGate {
|
|
83
|
+
readonly id: string;
|
|
84
|
+
readonly description: string;
|
|
85
|
+
readonly status?: ProjectPlanningGateStatus;
|
|
86
|
+
readonly command?: string;
|
|
87
|
+
readonly evidence?: string;
|
|
88
|
+
readonly required?: boolean;
|
|
89
|
+
readonly metadata?: Record<string, unknown>;
|
|
90
|
+
}
|
|
91
|
+
export interface ProjectPlanningAgentAssignment {
|
|
92
|
+
readonly taskId: string;
|
|
93
|
+
readonly agentType?: 'explorer' | 'worker' | 'none' | string;
|
|
94
|
+
readonly scope?: readonly string[];
|
|
95
|
+
readonly expectedOutput?: string;
|
|
96
|
+
readonly verification?: string;
|
|
97
|
+
readonly canRunConcurrently?: boolean;
|
|
98
|
+
readonly metadata?: Record<string, unknown>;
|
|
99
|
+
}
|
|
100
|
+
export interface ProjectPlanningState {
|
|
101
|
+
readonly id: string;
|
|
102
|
+
readonly projectId: string;
|
|
103
|
+
readonly knowledgeSpaceId: string;
|
|
104
|
+
readonly goal: string;
|
|
105
|
+
readonly scope?: string;
|
|
106
|
+
readonly knownContext: readonly string[];
|
|
107
|
+
readonly openQuestions: readonly ProjectPlanningQuestion[];
|
|
108
|
+
readonly answeredQuestions: readonly ProjectPlanningQuestion[];
|
|
109
|
+
readonly decisions: readonly ProjectPlanningDecision[];
|
|
110
|
+
readonly assumptions: readonly string[];
|
|
111
|
+
readonly constraints: readonly string[];
|
|
112
|
+
readonly risks: readonly string[];
|
|
113
|
+
readonly tasks: readonly ProjectPlanningTask[];
|
|
114
|
+
readonly dependencies: readonly ProjectPlanningDependency[];
|
|
115
|
+
readonly verificationGates: readonly ProjectPlanningVerificationGate[];
|
|
116
|
+
readonly agentAssignments: readonly ProjectPlanningAgentAssignment[];
|
|
117
|
+
readonly readiness: ProjectPlanningReadiness;
|
|
118
|
+
readonly executionApproved: boolean;
|
|
119
|
+
readonly createdAt: number;
|
|
120
|
+
readonly updatedAt: number;
|
|
121
|
+
readonly metadata?: Record<string, unknown>;
|
|
122
|
+
}
|
|
123
|
+
export interface ProjectPlanningGap {
|
|
124
|
+
readonly id: string;
|
|
125
|
+
readonly kind: ProjectPlanningGapKind;
|
|
126
|
+
readonly severity: ProjectPlanningGapSeverity;
|
|
127
|
+
readonly message: string;
|
|
128
|
+
readonly question?: ProjectPlanningQuestion;
|
|
129
|
+
readonly relatedTaskIds?: readonly string[];
|
|
130
|
+
readonly metadata?: Record<string, unknown>;
|
|
131
|
+
}
|
|
132
|
+
export interface ProjectPlanningEvaluation {
|
|
133
|
+
readonly ok: true;
|
|
134
|
+
readonly projectId: string;
|
|
135
|
+
readonly knowledgeSpaceId: string;
|
|
136
|
+
readonly readiness: ProjectPlanningReadiness;
|
|
137
|
+
readonly gaps: readonly ProjectPlanningGap[];
|
|
138
|
+
readonly nextQuestion?: ProjectPlanningQuestion;
|
|
139
|
+
readonly state: ProjectPlanningState;
|
|
140
|
+
}
|
|
141
|
+
export interface ProjectPlanningStatus {
|
|
142
|
+
readonly ok: true;
|
|
143
|
+
readonly projectId: string;
|
|
144
|
+
readonly knowledgeSpaceId: string;
|
|
145
|
+
readonly passiveOnly: true;
|
|
146
|
+
readonly counts: {
|
|
147
|
+
readonly states: number;
|
|
148
|
+
readonly decisions: number;
|
|
149
|
+
readonly languageArtifacts: number;
|
|
150
|
+
};
|
|
151
|
+
readonly capabilities: readonly string[];
|
|
152
|
+
}
|
|
153
|
+
export interface ProjectPlanningStateUpsertInput extends ProjectPlanningSpaceInput {
|
|
154
|
+
readonly state: Partial<ProjectPlanningState> & {
|
|
155
|
+
readonly goal?: string;
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
export interface ProjectPlanningEvaluateInput extends ProjectPlanningSpaceInput {
|
|
159
|
+
readonly state?: Partial<ProjectPlanningState> & {
|
|
160
|
+
readonly goal?: string;
|
|
161
|
+
};
|
|
162
|
+
readonly planningId?: string;
|
|
163
|
+
}
|
|
164
|
+
export interface ProjectPlanningStateResult {
|
|
165
|
+
readonly ok: true;
|
|
166
|
+
readonly projectId: string;
|
|
167
|
+
readonly knowledgeSpaceId: string;
|
|
168
|
+
readonly state: ProjectPlanningState | null;
|
|
169
|
+
readonly source?: KnowledgeSourceRecord;
|
|
170
|
+
}
|
|
171
|
+
export interface ProjectPlanningDecisionRecordInput extends ProjectPlanningSpaceInput {
|
|
172
|
+
readonly decision: Partial<ProjectPlanningDecision> & {
|
|
173
|
+
readonly title: string;
|
|
174
|
+
readonly decision: string;
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export interface ProjectPlanningDecisionResult {
|
|
178
|
+
readonly ok: true;
|
|
179
|
+
readonly projectId: string;
|
|
180
|
+
readonly knowledgeSpaceId: string;
|
|
181
|
+
readonly decision: ProjectPlanningDecision;
|
|
182
|
+
readonly source: KnowledgeSourceRecord;
|
|
183
|
+
}
|
|
184
|
+
export interface ProjectPlanningDecisionsResult {
|
|
185
|
+
readonly ok: true;
|
|
186
|
+
readonly projectId: string;
|
|
187
|
+
readonly knowledgeSpaceId: string;
|
|
188
|
+
readonly decisions: readonly ProjectPlanningDecision[];
|
|
189
|
+
}
|
|
190
|
+
export interface ProjectPlanningLanguageUpsertInput extends ProjectPlanningSpaceInput {
|
|
191
|
+
readonly language: Partial<ProjectPlanningLanguageArtifact> & {
|
|
192
|
+
readonly terms?: readonly ProjectPlanningTerm[];
|
|
193
|
+
readonly ambiguities?: readonly ProjectPlanningAmbiguity[];
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
export interface ProjectPlanningLanguageResult {
|
|
197
|
+
readonly ok: true;
|
|
198
|
+
readonly projectId: string;
|
|
199
|
+
readonly knowledgeSpaceId: string;
|
|
200
|
+
readonly language: ProjectPlanningLanguageArtifact | null;
|
|
201
|
+
readonly source?: KnowledgeSourceRecord;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/project-planning/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { KnowledgeProjectionTarget } from './types.js';
|
|
2
|
+
export declare function slugify(value: string): string;
|
|
3
|
+
export declare function quote(value: string | undefined): string | null;
|
|
4
|
+
export declare function formatDateTime(timestamp: number | undefined): string | null;
|
|
5
|
+
export declare function codeFenceJson(value: Record<string, unknown> | undefined): string | null;
|
|
6
|
+
export declare function joinSections(...sections: Array<string | null | undefined>): string;
|
|
7
|
+
export declare function dedupe<T>(values: readonly T[], key: (value: T) => string): T[];
|
|
8
|
+
export declare function buildBulletList(items: readonly string[]): string;
|
|
9
|
+
export declare function sortByTitle<T extends {
|
|
10
|
+
title?: string;
|
|
11
|
+
}>(values: readonly T[]): T[];
|
|
12
|
+
export declare function materializedTargetReference(target: KnowledgeProjectionTarget): {
|
|
13
|
+
readonly kind: 'source' | 'node';
|
|
14
|
+
readonly id: string;
|
|
15
|
+
} | null;
|
|
16
|
+
//# sourceMappingURL=projection-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-utils.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/projection-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAG3E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGvF;AAED,wBAAgB,YAAY,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAElF;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CAU9E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAEhE;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAEnF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,yBAAyB,GAAG;IAC9E,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAKP"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export function slugify(value) {
|
|
2
|
+
return value
|
|
3
|
+
.toLowerCase()
|
|
4
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
5
|
+
.replace(/^-+|-+$/g, '')
|
|
6
|
+
.slice(0, 80) || 'item';
|
|
7
|
+
}
|
|
8
|
+
export function quote(value) {
|
|
9
|
+
const trimmed = value?.trim();
|
|
10
|
+
return trimmed ? `> ${trimmed.replace(/\n+/g, '\n> ')}` : null;
|
|
11
|
+
}
|
|
12
|
+
export function formatDateTime(timestamp) {
|
|
13
|
+
if (!timestamp || !Number.isFinite(timestamp))
|
|
14
|
+
return null;
|
|
15
|
+
return new Date(timestamp).toISOString();
|
|
16
|
+
}
|
|
17
|
+
export function codeFenceJson(value) {
|
|
18
|
+
if (!value || Object.keys(value).length === 0)
|
|
19
|
+
return null;
|
|
20
|
+
return ['```json', JSON.stringify(value, null, 2), '```'].join('\n');
|
|
21
|
+
}
|
|
22
|
+
export function joinSections(...sections) {
|
|
23
|
+
return sections.filter((section) => typeof section === 'string' && section.trim().length > 0).join('\n\n');
|
|
24
|
+
}
|
|
25
|
+
export function dedupe(values, key) {
|
|
26
|
+
const seen = new Set();
|
|
27
|
+
const result = [];
|
|
28
|
+
for (const value of values) {
|
|
29
|
+
const id = key(value);
|
|
30
|
+
if (seen.has(id))
|
|
31
|
+
continue;
|
|
32
|
+
seen.add(id);
|
|
33
|
+
result.push(value);
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
export function buildBulletList(items) {
|
|
38
|
+
return items.length > 0 ? items.map((item) => `- ${item}`).join('\n') : '- none';
|
|
39
|
+
}
|
|
40
|
+
export function sortByTitle(values) {
|
|
41
|
+
return [...values].sort((a, b) => (a.title ?? '').localeCompare(b.title ?? ''));
|
|
42
|
+
}
|
|
43
|
+
export function materializedTargetReference(target) {
|
|
44
|
+
if ((target.kind === 'source' || target.kind === 'node') && target.itemId) {
|
|
45
|
+
return { kind: target.kind, id: target.itemId };
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projections.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/projections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"projections.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/projections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAkB3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,kBAAkB,EAElB,+BAA+B,EAE/B,yBAAyB,EAEzB,yBAAyB,EACzB,6BAA6B,EAE9B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,SAAS,kBAAkB,EAAE,CAAC;CAC3D;AAED,qBAAa,0BAA0B;IAInC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAJhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;gBAGjD,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,aAAa,EAC7C,OAAO,GAAE,iCAAsC;IAK3C,WAAW,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAiB7D,MAAM,CACV,KAAK,EAAE;QACL,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;QAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,yBAAyB,CAAC;IA4B/B,WAAW,CACf,KAAK,EAAE;QACL,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;QAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,GACA,OAAO,CAAC,+BAA+B,CAAC;IAyC3C,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,kBAAkB;IAoD1B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,gBAAgB;IAgFxB,OAAO,CAAC,cAAc;IA2DtB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,gBAAgB;IA+CxB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,0BAA0B;CAKnC"}
|