@undefineds.co/linx 0.3.20 → 0.3.23
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/generated/version.js +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/auto-mode/pod-persistence.js +53 -3
- package/dist/lib/auto-mode/pod-persistence.js.map +1 -1
- package/dist/lib/auto-mode/secretary.js +2 -2
- package/dist/lib/auto-mode/secretary.js.map +1 -1
- package/dist/lib/chat-api.js +23 -61
- package/dist/lib/chat-api.js.map +1 -1
- package/dist/lib/codex-plugin/index.js +1 -0
- package/dist/lib/codex-plugin/index.js.map +1 -1
- package/dist/lib/codex-plugin/symphony-mcp.js +335 -0
- package/dist/lib/codex-plugin/symphony-mcp.js.map +1 -0
- package/dist/lib/linx-cloud-errors.js +0 -5
- package/dist/lib/linx-cloud-errors.js.map +1 -1
- package/dist/lib/linx-status-line.js +1 -8
- package/dist/lib/linx-status-line.js.map +1 -1
- package/dist/lib/linx-tui-contract.js +2 -1
- package/dist/lib/linx-tui-contract.js.map +1 -1
- package/dist/lib/models.js +3 -2
- package/dist/lib/models.js.map +1 -1
- package/dist/lib/pi-adapter/auth.js +68 -0
- package/dist/lib/pi-adapter/auth.js.map +1 -0
- package/dist/lib/pi-adapter/branding.js +67 -110
- package/dist/lib/pi-adapter/branding.js.map +1 -1
- package/dist/lib/pi-adapter/interactive.js +341 -101
- package/dist/lib/pi-adapter/interactive.js.map +1 -1
- package/dist/lib/pi-adapter/pod-mirror.js +38 -107
- package/dist/lib/pi-adapter/pod-mirror.js.map +1 -1
- package/dist/lib/pi-adapter/pod-native.js +2 -0
- package/dist/lib/pi-adapter/pod-native.js.map +1 -1
- package/dist/lib/pi-adapter/pod-tools.js +140 -0
- package/dist/lib/pi-adapter/pod-tools.js.map +1 -0
- package/dist/lib/pi-adapter/runtime.js +2 -12
- package/dist/lib/pi-adapter/runtime.js.map +1 -1
- package/dist/lib/pi-adapter/session.js +13 -17
- package/dist/lib/pi-adapter/session.js.map +1 -1
- package/dist/lib/pi-adapter/stream.js +2 -20
- package/dist/lib/pi-adapter/stream.js.map +1 -1
- package/dist/lib/pod-chat-store.js +53 -4
- package/dist/lib/pod-chat-store.js.map +1 -1
- package/dist/lib/resource-identity.js +2 -0
- package/dist/lib/resource-identity.js.map +1 -0
- package/dist/lib/status-line-command.js +2 -2
- package/dist/lib/status-line-command.js.map +1 -1
- package/dist/lib/symphony/archive.js +15 -37
- package/dist/lib/symphony/archive.js.map +1 -1
- package/dist/lib/symphony/pod-projection.js +189 -1346
- package/dist/lib/symphony/pod-projection.js.map +1 -1
- package/dist/lib/symphony-command.js +209 -109
- package/dist/lib/symphony-command.js.map +1 -1
- package/dist/plugins/linx-symphony-codex/.codex-plugin/plugin.json +38 -0
- package/dist/plugins/linx-symphony-codex/.mcp.json +10 -0
- package/dist/plugins/linx-symphony-codex/README.md +9 -0
- package/dist/plugins/linx-symphony-codex/hooks.json +60 -0
- package/dist/plugins/linx-symphony-codex/scripts/symphony-hook-events.mjs +119 -0
- package/dist/plugins/linx-symphony-codex/scripts/symphony-mcp.mjs +335 -0
- package/dist/plugins/linx-symphony-codex/skills/symphony/SKILL.md +791 -0
- package/dist/skills/symphony/SKILL.md +7 -0
- package/dist/skills/xpod-cli/SKILL.md +2 -13
- package/package.json +4 -4
- package/vendor/agent-runtime/dist/chat-reconciler.d.ts +33 -0
- package/vendor/agent-runtime/dist/chat-reconciler.js +108 -0
- package/vendor/agent-runtime/dist/index.d.ts +4 -1
- package/vendor/agent-runtime/dist/index.js +4 -1
- package/vendor/agent-runtime/dist/matrix-client.d.ts +149 -0
- package/vendor/agent-runtime/dist/matrix-client.js +220 -0
- package/vendor/agent-runtime/dist/pod-resource-identity.d.ts +17 -0
- package/vendor/agent-runtime/dist/pod-resource-identity.js +54 -0
- package/vendor/agent-runtime/dist/reconciler.d.ts +0 -11
- package/vendor/agent-runtime/dist/reconciler.js +5 -43
- package/vendor/agent-runtime/dist/symphony.d.ts +272 -27
- package/vendor/agent-runtime/dist/symphony.js +1268 -21
- package/vendor/agent-runtime/dist/workspace.d.ts +61 -0
- package/vendor/agent-runtime/dist/workspace.js +81 -0
- package/vendor/agent-runtime/package.json +5 -1
- package/vendor/stores/dist/current-pod-base.d.ts +2 -0
- package/vendor/stores/dist/current-pod-base.js +14 -0
- package/vendor/stores/dist/exact-records.d.ts +7 -0
- package/vendor/stores/dist/exact-records.js +87 -0
- package/vendor/stores/dist/index.d.ts +1 -0
- package/vendor/stores/dist/index.js +1 -0
- package/vendor/stores/dist/login.d.ts +51 -0
- package/vendor/stores/dist/login.js +195 -0
- package/vendor/stores/dist/pod-collection.d.ts +28 -0
- package/vendor/stores/dist/pod-collection.js +194 -0
- package/vendor/stores/dist/pod-write-guard.d.ts +5 -0
- package/vendor/stores/dist/pod-write-guard.js +133 -0
- package/vendor/stores/dist/symphony-control.d.ts +245 -0
- package/vendor/stores/dist/symphony-control.js +2175 -0
- package/vendor/stores/package.json +14 -0
- package/dist/lib/capture/persistence.js +0 -377
- package/dist/lib/capture/persistence.js.map +0 -1
- package/dist/lib/capture/tool.js +0 -242
- package/dist/lib/capture/tool.js.map +0 -1
- package/dist/skills/basic/SKILL.md +0 -46
- package/dist/skills/capture/SKILL.md +0 -165
- package/vendor/agent-runtime/dist/coordination.d.ts +0 -93
- package/vendor/agent-runtime/dist/coordination.js +0 -145
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@linx/stores",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./dist/index.js",
|
|
7
|
+
"./login": "./dist/login.js",
|
|
8
|
+
"./current-pod-base": "./dist/current-pod-base.js",
|
|
9
|
+
"./exact-records": "./dist/exact-records.js",
|
|
10
|
+
"./pod-db": "./dist/pod-collection.js",
|
|
11
|
+
"./pod-write-guard": "./dist/pod-write-guard.js",
|
|
12
|
+
"./symphony-control": "./dist/symphony-control.js"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
import { CaptureCandidateStatus, CaptureDecision, approvalResource, captureCandidateResource, captureEventResource, hasCaptureForSource, inputRequestResource, } from '@undefineds.co/models';
|
|
2
|
-
export async function persistObservedCapture(context, input) {
|
|
3
|
-
const createdAt = input.createdAt ? new Date(input.createdAt) : new Date();
|
|
4
|
-
const duplicate = await hasCaptureForSource(context.db, { source: input.source });
|
|
5
|
-
if (duplicate) {
|
|
6
|
-
const eventId = captureEventResource.buildId({ id: input.eventId, source: input.source, decision: CaptureDecision.DUPLICATE, createdAt });
|
|
7
|
-
await insertCaptureEvent(context.db, {
|
|
8
|
-
id: eventId,
|
|
9
|
-
source: input.source,
|
|
10
|
-
decision: CaptureDecision.DUPLICATE,
|
|
11
|
-
reason: input.reason,
|
|
12
|
-
actor: input.actor,
|
|
13
|
-
chat: input.chat,
|
|
14
|
-
thread: input.thread,
|
|
15
|
-
task: input.task,
|
|
16
|
-
run: input.run,
|
|
17
|
-
metadata: input.metadata,
|
|
18
|
-
createdAt,
|
|
19
|
-
});
|
|
20
|
-
return { status: 'duplicate', eventId };
|
|
21
|
-
}
|
|
22
|
-
const candidateId = captureCandidateResource.buildId({ id: input.id, source: input.source, summary: input.summary, createdAt });
|
|
23
|
-
const candidateIri = buildResourceIri(context, captureCandidateResource, {
|
|
24
|
-
id: input.id,
|
|
25
|
-
source: input.source,
|
|
26
|
-
summary: input.summary,
|
|
27
|
-
createdAt,
|
|
28
|
-
}, candidateId);
|
|
29
|
-
await context.db.insert(captureCandidateResource).values(stripUndefined({
|
|
30
|
-
id: candidateId,
|
|
31
|
-
source: input.source,
|
|
32
|
-
summary: input.summary,
|
|
33
|
-
suggestedType: input.suggestedType,
|
|
34
|
-
suggestedTarget: input.suggestedTarget,
|
|
35
|
-
confidence: input.confidence ?? 'medium',
|
|
36
|
-
reason: input.reason,
|
|
37
|
-
status: CaptureCandidateStatus.CANDIDATE,
|
|
38
|
-
sourceHash: input.sourceHash,
|
|
39
|
-
chat: input.chat,
|
|
40
|
-
thread: input.thread,
|
|
41
|
-
task: input.task,
|
|
42
|
-
run: input.run,
|
|
43
|
-
actor: input.actor,
|
|
44
|
-
metadata: input.metadata,
|
|
45
|
-
createdAt,
|
|
46
|
-
updatedAt: createdAt,
|
|
47
|
-
})).execute();
|
|
48
|
-
const eventId = captureEventResource.buildId({ id: input.eventId, source: input.source, decision: CaptureDecision.CANDIDATE_CREATED, createdAt });
|
|
49
|
-
await insertCaptureEvent(context.db, {
|
|
50
|
-
id: eventId,
|
|
51
|
-
source: input.source,
|
|
52
|
-
captureCandidate: candidateIri,
|
|
53
|
-
decision: CaptureDecision.CANDIDATE_CREATED,
|
|
54
|
-
suggestedType: input.suggestedType,
|
|
55
|
-
suggestedTarget: input.suggestedTarget,
|
|
56
|
-
confidence: input.confidence ?? 'medium',
|
|
57
|
-
reason: input.reason,
|
|
58
|
-
actor: input.actor,
|
|
59
|
-
chat: input.chat,
|
|
60
|
-
thread: input.thread,
|
|
61
|
-
task: input.task,
|
|
62
|
-
run: input.run,
|
|
63
|
-
metadata: input.metadata,
|
|
64
|
-
createdAt,
|
|
65
|
-
});
|
|
66
|
-
return {
|
|
67
|
-
status: 'created',
|
|
68
|
-
candidateId,
|
|
69
|
-
candidateIri,
|
|
70
|
-
eventId,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
export async function recordCaptureCommit(context, input) {
|
|
74
|
-
const createdAt = input.createdAt ? new Date(input.createdAt) : new Date();
|
|
75
|
-
const eventId = captureEventResource.buildId({
|
|
76
|
-
id: input.eventId,
|
|
77
|
-
source: input.source,
|
|
78
|
-
decision: input.decision,
|
|
79
|
-
createdAt,
|
|
80
|
-
});
|
|
81
|
-
await insertCaptureEvent(context.db, {
|
|
82
|
-
id: eventId,
|
|
83
|
-
source: input.source,
|
|
84
|
-
targetResource: input.targetResource,
|
|
85
|
-
decision: input.decision,
|
|
86
|
-
suggestedType: input.suggestedType,
|
|
87
|
-
suggestedTarget: input.suggestedTarget,
|
|
88
|
-
confidence: input.confidence,
|
|
89
|
-
reason: input.reason,
|
|
90
|
-
approval: input.approval,
|
|
91
|
-
inputRequest: input.inputRequest,
|
|
92
|
-
actor: input.actor,
|
|
93
|
-
chat: input.chat,
|
|
94
|
-
thread: input.thread,
|
|
95
|
-
task: input.task,
|
|
96
|
-
run: input.run,
|
|
97
|
-
about: input.about,
|
|
98
|
-
metadata: input.metadata,
|
|
99
|
-
createdAt,
|
|
100
|
-
});
|
|
101
|
-
return {
|
|
102
|
-
status: 'recorded',
|
|
103
|
-
eventId,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
export async function commitExplicitCapture(context, input) {
|
|
107
|
-
const targetResource = await resolveFormalTargetResource(input);
|
|
108
|
-
const recorded = await recordCaptureCommit(context, {
|
|
109
|
-
...input,
|
|
110
|
-
targetResource,
|
|
111
|
-
decision: CaptureDecision.DIRECT_COMMIT,
|
|
112
|
-
});
|
|
113
|
-
return {
|
|
114
|
-
status: 'committed',
|
|
115
|
-
targetResource,
|
|
116
|
-
eventId: recorded.eventId,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
export async function commitOptimisticCapture(context, input) {
|
|
120
|
-
const createdAt = input.createdAt ? new Date(input.createdAt) : new Date();
|
|
121
|
-
const targetResource = await resolveFormalTargetResource(input);
|
|
122
|
-
const approval = await insertApprovalRequest(context, input, createdAt, targetResource);
|
|
123
|
-
const eventId = captureEventResource.buildId({
|
|
124
|
-
id: input.eventId,
|
|
125
|
-
source: input.source,
|
|
126
|
-
decision: CaptureDecision.OPTIMISTIC_COMMIT,
|
|
127
|
-
createdAt,
|
|
128
|
-
});
|
|
129
|
-
await insertCaptureEvent(context.db, {
|
|
130
|
-
id: eventId,
|
|
131
|
-
source: input.source,
|
|
132
|
-
targetResource,
|
|
133
|
-
decision: CaptureDecision.OPTIMISTIC_COMMIT,
|
|
134
|
-
suggestedType: input.suggestedType,
|
|
135
|
-
suggestedTarget: input.suggestedTarget,
|
|
136
|
-
confidence: input.confidence,
|
|
137
|
-
reason: input.reason,
|
|
138
|
-
approval: approval.approvalIri,
|
|
139
|
-
inputRequest: input.inputRequest,
|
|
140
|
-
actor: input.actor,
|
|
141
|
-
chat: input.chat,
|
|
142
|
-
thread: input.thread,
|
|
143
|
-
task: input.task,
|
|
144
|
-
run: input.run,
|
|
145
|
-
about: input.about,
|
|
146
|
-
metadata: input.metadata,
|
|
147
|
-
createdAt,
|
|
148
|
-
});
|
|
149
|
-
return {
|
|
150
|
-
status: 'pending_approval',
|
|
151
|
-
targetResource,
|
|
152
|
-
approvalId: approval.approvalId,
|
|
153
|
-
approvalIri: approval.approvalIri,
|
|
154
|
-
eventId,
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
export async function persistAmbiguousCapture(context, input) {
|
|
158
|
-
const createdAt = input.createdAt ? new Date(input.createdAt) : new Date();
|
|
159
|
-
const candidate = await insertCaptureCandidate(context, input, createdAt);
|
|
160
|
-
const inputRequestId = inputRequestResource.buildId({ id: input.inputRequestId, createdAt });
|
|
161
|
-
const inputRequestIri = buildResourceIri(context, inputRequestResource, { id: input.inputRequestId, createdAt }, inputRequestId);
|
|
162
|
-
await context.db.insert(inputRequestResource).values(stripUndefined({
|
|
163
|
-
id: inputRequestId,
|
|
164
|
-
session: input.session,
|
|
165
|
-
chat: input.chat,
|
|
166
|
-
thread: input.thread,
|
|
167
|
-
run: input.run,
|
|
168
|
-
task: input.task,
|
|
169
|
-
requester: input.requester ?? input.actor,
|
|
170
|
-
requestKind: input.requestKind ?? 'capture-classification',
|
|
171
|
-
prompt: input.prompt,
|
|
172
|
-
context: input.inputContext ?? input.reason,
|
|
173
|
-
inputOptions: input.inputOptions,
|
|
174
|
-
status: 'pending',
|
|
175
|
-
assignedTo: input.assignedTo,
|
|
176
|
-
metadata: input.metadata,
|
|
177
|
-
createdAt,
|
|
178
|
-
expiresAt: normalizeOptionalDate(input.expiresAt),
|
|
179
|
-
})).execute();
|
|
180
|
-
const eventId = captureEventResource.buildId({
|
|
181
|
-
id: input.eventId,
|
|
182
|
-
source: input.source,
|
|
183
|
-
decision: CaptureDecision.CANDIDATE_CREATED,
|
|
184
|
-
createdAt,
|
|
185
|
-
});
|
|
186
|
-
await insertCaptureEvent(context.db, {
|
|
187
|
-
id: eventId,
|
|
188
|
-
source: input.source,
|
|
189
|
-
captureCandidate: candidate.candidateIri,
|
|
190
|
-
decision: CaptureDecision.CANDIDATE_CREATED,
|
|
191
|
-
suggestedType: input.suggestedType,
|
|
192
|
-
suggestedTarget: input.suggestedTarget,
|
|
193
|
-
confidence: input.confidence ?? 'medium',
|
|
194
|
-
reason: input.reason,
|
|
195
|
-
inputRequest: inputRequestIri,
|
|
196
|
-
actor: input.actor,
|
|
197
|
-
chat: input.chat,
|
|
198
|
-
thread: input.thread,
|
|
199
|
-
task: input.task,
|
|
200
|
-
run: input.run,
|
|
201
|
-
metadata: input.metadata,
|
|
202
|
-
createdAt,
|
|
203
|
-
});
|
|
204
|
-
return {
|
|
205
|
-
status: 'waiting_input',
|
|
206
|
-
candidateId: candidate.candidateId,
|
|
207
|
-
candidateIri: candidate.candidateIri,
|
|
208
|
-
inputRequestId,
|
|
209
|
-
inputRequestIri,
|
|
210
|
-
eventId,
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
export async function requestCaptureApproval(context, input) {
|
|
214
|
-
const createdAt = input.createdAt ? new Date(input.createdAt) : new Date();
|
|
215
|
-
const candidate = await insertCaptureCandidate(context, input, createdAt);
|
|
216
|
-
const approval = await insertApprovalRequest(context, input, createdAt, input.target);
|
|
217
|
-
const eventId = captureEventResource.buildId({
|
|
218
|
-
id: input.eventId,
|
|
219
|
-
source: input.source,
|
|
220
|
-
decision: CaptureDecision.CANDIDATE_CREATED,
|
|
221
|
-
createdAt,
|
|
222
|
-
});
|
|
223
|
-
await insertCaptureEvent(context.db, {
|
|
224
|
-
id: eventId,
|
|
225
|
-
source: input.source,
|
|
226
|
-
captureCandidate: candidate.candidateIri,
|
|
227
|
-
decision: CaptureDecision.CANDIDATE_CREATED,
|
|
228
|
-
suggestedType: input.suggestedType,
|
|
229
|
-
suggestedTarget: input.suggestedTarget,
|
|
230
|
-
confidence: input.confidence ?? 'medium',
|
|
231
|
-
reason: input.reason,
|
|
232
|
-
approval: approval.approvalIri,
|
|
233
|
-
actor: input.actor,
|
|
234
|
-
chat: input.chat,
|
|
235
|
-
thread: input.thread,
|
|
236
|
-
task: input.task,
|
|
237
|
-
run: input.run,
|
|
238
|
-
metadata: input.metadata,
|
|
239
|
-
createdAt,
|
|
240
|
-
});
|
|
241
|
-
return {
|
|
242
|
-
status: 'waiting_approval',
|
|
243
|
-
candidateId: candidate.candidateId,
|
|
244
|
-
candidateIri: candidate.candidateIri,
|
|
245
|
-
approvalId: approval.approvalId,
|
|
246
|
-
approvalIri: approval.approvalIri,
|
|
247
|
-
eventId,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
export async function recordCaptureReviewEvent(context, input) {
|
|
251
|
-
const createdAt = input.createdAt ? new Date(input.createdAt) : new Date();
|
|
252
|
-
const eventId = captureEventResource.buildId({
|
|
253
|
-
id: input.eventId,
|
|
254
|
-
source: input.source,
|
|
255
|
-
decision: input.decision,
|
|
256
|
-
createdAt,
|
|
257
|
-
});
|
|
258
|
-
const nextCandidateStatus = candidateStatusForReviewDecision(input.decision);
|
|
259
|
-
if (input.candidateId && nextCandidateStatus) {
|
|
260
|
-
await context.db.updateById(captureCandidateResource, input.candidateId, { status: nextCandidateStatus });
|
|
261
|
-
}
|
|
262
|
-
await insertCaptureEvent(context.db, {
|
|
263
|
-
id: eventId,
|
|
264
|
-
source: input.source,
|
|
265
|
-
captureCandidate: input.candidateIri,
|
|
266
|
-
targetResource: input.targetResource,
|
|
267
|
-
decision: input.decision,
|
|
268
|
-
suggestedType: input.suggestedType,
|
|
269
|
-
suggestedTarget: input.suggestedTarget,
|
|
270
|
-
confidence: input.confidence,
|
|
271
|
-
reason: input.reason,
|
|
272
|
-
userCorrection: input.userCorrection,
|
|
273
|
-
approval: input.approval,
|
|
274
|
-
inputRequest: input.inputRequest,
|
|
275
|
-
actor: input.actor,
|
|
276
|
-
chat: input.chat,
|
|
277
|
-
thread: input.thread,
|
|
278
|
-
task: input.task,
|
|
279
|
-
run: input.run,
|
|
280
|
-
about: input.about,
|
|
281
|
-
metadata: input.metadata,
|
|
282
|
-
createdAt,
|
|
283
|
-
});
|
|
284
|
-
return { status: 'recorded', eventId };
|
|
285
|
-
}
|
|
286
|
-
async function insertCaptureCandidate(context, input, createdAt) {
|
|
287
|
-
const candidateId = captureCandidateResource.buildId({ id: input.id, source: input.source, summary: input.summary, createdAt });
|
|
288
|
-
const candidateIri = buildResourceIri(context, captureCandidateResource, {
|
|
289
|
-
id: input.id,
|
|
290
|
-
source: input.source,
|
|
291
|
-
summary: input.summary,
|
|
292
|
-
createdAt,
|
|
293
|
-
}, candidateId);
|
|
294
|
-
await context.db.insert(captureCandidateResource).values(stripUndefined({
|
|
295
|
-
id: candidateId,
|
|
296
|
-
source: input.source,
|
|
297
|
-
summary: input.summary,
|
|
298
|
-
suggestedType: input.suggestedType,
|
|
299
|
-
suggestedTarget: input.suggestedTarget,
|
|
300
|
-
confidence: input.confidence ?? 'medium',
|
|
301
|
-
reason: input.reason,
|
|
302
|
-
status: CaptureCandidateStatus.CANDIDATE,
|
|
303
|
-
sourceHash: input.sourceHash,
|
|
304
|
-
chat: input.chat,
|
|
305
|
-
thread: input.thread,
|
|
306
|
-
task: input.task,
|
|
307
|
-
run: input.run,
|
|
308
|
-
actor: input.actor,
|
|
309
|
-
metadata: input.metadata,
|
|
310
|
-
createdAt,
|
|
311
|
-
updatedAt: createdAt,
|
|
312
|
-
})).execute();
|
|
313
|
-
return { candidateId, candidateIri };
|
|
314
|
-
}
|
|
315
|
-
async function insertApprovalRequest(context, input, createdAt, target) {
|
|
316
|
-
const approvalId = approvalResource.buildId({ id: input.approvalId, createdAt });
|
|
317
|
-
const approvalIri = buildResourceIri(context, approvalResource, { id: input.approvalId, createdAt }, approvalId);
|
|
318
|
-
await context.db.insert(approvalResource).values(stripUndefined({
|
|
319
|
-
id: approvalId,
|
|
320
|
-
session: input.session,
|
|
321
|
-
chat: input.chat,
|
|
322
|
-
thread: input.thread,
|
|
323
|
-
toolCallId: input.toolCallId,
|
|
324
|
-
toolName: input.toolName ?? 'capture',
|
|
325
|
-
target,
|
|
326
|
-
action: input.action,
|
|
327
|
-
risk: input.risk,
|
|
328
|
-
status: 'pending',
|
|
329
|
-
assignedTo: input.assignedTo,
|
|
330
|
-
reason: input.reason,
|
|
331
|
-
context: input.approvalContext ?? input.reason,
|
|
332
|
-
approvalOptions: input.approvalOptions,
|
|
333
|
-
createdAt,
|
|
334
|
-
expiresAt: normalizeOptionalDate(input.expiresAt),
|
|
335
|
-
})).execute();
|
|
336
|
-
return { approvalId, approvalIri };
|
|
337
|
-
}
|
|
338
|
-
async function resolveFormalTargetResource(input) {
|
|
339
|
-
if (input.writeFormalResource) {
|
|
340
|
-
const result = await input.writeFormalResource();
|
|
341
|
-
if (!result.targetResource) {
|
|
342
|
-
throw new Error('Formal capture writer did not return targetResource.');
|
|
343
|
-
}
|
|
344
|
-
return result.targetResource;
|
|
345
|
-
}
|
|
346
|
-
if (!input.targetResource) {
|
|
347
|
-
throw new Error('Formal capture requires targetResource or writeFormalResource.');
|
|
348
|
-
}
|
|
349
|
-
return input.targetResource;
|
|
350
|
-
}
|
|
351
|
-
async function insertCaptureEvent(db, row) {
|
|
352
|
-
await db.insert(captureEventResource).values(stripUndefined(row)).execute();
|
|
353
|
-
}
|
|
354
|
-
function buildResourceIri(context, resource, row, fallbackId) {
|
|
355
|
-
if (!context.webId) {
|
|
356
|
-
return fallbackId;
|
|
357
|
-
}
|
|
358
|
-
return resource.buildIri(context.webId, row);
|
|
359
|
-
}
|
|
360
|
-
function normalizeOptionalDate(value) {
|
|
361
|
-
return value === undefined ? undefined : new Date(value);
|
|
362
|
-
}
|
|
363
|
-
function candidateStatusForReviewDecision(decision) {
|
|
364
|
-
switch (decision) {
|
|
365
|
-
case CaptureDecision.PROMOTED:
|
|
366
|
-
return CaptureCandidateStatus.PROMOTED;
|
|
367
|
-
case CaptureDecision.REJECTED:
|
|
368
|
-
case CaptureDecision.ROLLBACK:
|
|
369
|
-
return CaptureCandidateStatus.REJECTED;
|
|
370
|
-
default:
|
|
371
|
-
return null;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
function stripUndefined(row) {
|
|
375
|
-
return Object.fromEntries(Object.entries(row).filter(([, value]) => value !== undefined));
|
|
376
|
-
}
|
|
377
|
-
//# sourceMappingURL=persistence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/lib/capture/persistence.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/capture/tool.js
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { defineTool } from '@earendil-works/pi-coding-agent';
|
|
2
|
-
import { Type } from 'typebox';
|
|
3
|
-
import { getDefaultPodDataSession } from '../pod-data-session.js';
|
|
4
|
-
import { drizzle, solidResources } from '../models.js';
|
|
5
|
-
import { persistObservedCapture, persistAmbiguousCapture, recordCaptureCommit, recordCaptureReviewEvent, requestCaptureApproval, } from './persistence.js';
|
|
6
|
-
const CaptureOperation = {
|
|
7
|
-
OBSERVED_CANDIDATE: 'observed_candidate',
|
|
8
|
-
DIRECT_COMMIT_EVENT: 'direct_commit_event',
|
|
9
|
-
OPTIMISTIC_COMMIT_EVENT: 'optimistic_commit_event',
|
|
10
|
-
AMBIGUOUS_INPUT: 'ambiguous_input',
|
|
11
|
-
APPROVAL_REQUEST: 'approval_request',
|
|
12
|
-
REVIEW_EVENT: 'review_event',
|
|
13
|
-
};
|
|
14
|
-
export function createLinxCaptureTool(dependencies = {}) {
|
|
15
|
-
const getPodDataSession = dependencies.getPodDataSession ?? getDefaultPodDataSession;
|
|
16
|
-
const createDb = dependencies.createDb ?? createDefaultCaptureDb;
|
|
17
|
-
return defineTool({
|
|
18
|
-
name: 'linx_capture',
|
|
19
|
-
label: 'LinX Capture',
|
|
20
|
-
description: 'Persist LinX CaptureCandidate, CaptureEvent, ApprovalRequest, and InputRequest records to the active Solid Pod using shared LinX models.',
|
|
21
|
-
promptSnippet: 'linx_capture: record Secretary capture candidates, capture events, and Approval/Input gates in the active Pod.',
|
|
22
|
-
promptGuidelines: [
|
|
23
|
-
'Use linx_capture for CaptureCandidate/CaptureEvent ledgers; use xpod obj for formal typed resource writes when the target resource itself must be created.',
|
|
24
|
-
'Do not use linx_capture to silently create user-facing taxonomy; choose approval_request or ambiguous_input when authority or missing information is required.',
|
|
25
|
-
'Always provide the source IRI or durable source URL for duplicate detection and auditability.',
|
|
26
|
-
],
|
|
27
|
-
parameters: Type.Object({
|
|
28
|
-
operation: Type.Union([
|
|
29
|
-
Type.Literal(CaptureOperation.OBSERVED_CANDIDATE),
|
|
30
|
-
Type.Literal(CaptureOperation.DIRECT_COMMIT_EVENT),
|
|
31
|
-
Type.Literal(CaptureOperation.OPTIMISTIC_COMMIT_EVENT),
|
|
32
|
-
Type.Literal(CaptureOperation.AMBIGUOUS_INPUT),
|
|
33
|
-
Type.Literal(CaptureOperation.APPROVAL_REQUEST),
|
|
34
|
-
Type.Literal(CaptureOperation.REVIEW_EVENT),
|
|
35
|
-
]),
|
|
36
|
-
id: Type.Optional(Type.String()),
|
|
37
|
-
eventId: Type.Optional(Type.String()),
|
|
38
|
-
source: Type.Optional(Type.String()),
|
|
39
|
-
summary: Type.Optional(Type.String()),
|
|
40
|
-
targetResource: Type.Optional(Type.String()),
|
|
41
|
-
suggestedType: Type.Optional(Type.String()),
|
|
42
|
-
suggestedTarget: Type.Optional(Type.String()),
|
|
43
|
-
confidence: Type.Optional(Type.Union([Type.Literal('low'), Type.Literal('medium'), Type.Literal('high')])),
|
|
44
|
-
reason: Type.Optional(Type.String()),
|
|
45
|
-
actor: Type.Optional(Type.String()),
|
|
46
|
-
chat: Type.Optional(Type.String()),
|
|
47
|
-
thread: Type.Optional(Type.String()),
|
|
48
|
-
task: Type.Optional(Type.String()),
|
|
49
|
-
run: Type.Optional(Type.String()),
|
|
50
|
-
sourceHash: Type.Optional(Type.String()),
|
|
51
|
-
metadata: Type.Optional(Type.Record(Type.String(), Type.Any())),
|
|
52
|
-
createdAt: Type.Optional(Type.Union([Type.String(), Type.Number()])),
|
|
53
|
-
approval: Type.Optional(Type.String()),
|
|
54
|
-
inputRequest: Type.Optional(Type.String()),
|
|
55
|
-
inputRequestId: Type.Optional(Type.String()),
|
|
56
|
-
prompt: Type.Optional(Type.String()),
|
|
57
|
-
inputOptions: Type.Optional(Type.String()),
|
|
58
|
-
requestKind: Type.Optional(Type.String()),
|
|
59
|
-
requester: Type.Optional(Type.String()),
|
|
60
|
-
assignedTo: Type.Optional(Type.String()),
|
|
61
|
-
inputContext: Type.Optional(Type.String()),
|
|
62
|
-
approvalId: Type.Optional(Type.String()),
|
|
63
|
-
session: Type.Optional(Type.String()),
|
|
64
|
-
toolCallId: Type.Optional(Type.String()),
|
|
65
|
-
toolName: Type.Optional(Type.String()),
|
|
66
|
-
target: Type.Optional(Type.String()),
|
|
67
|
-
action: Type.Optional(Type.String()),
|
|
68
|
-
risk: Type.Optional(Type.String()),
|
|
69
|
-
approvalOptions: Type.Optional(Type.String()),
|
|
70
|
-
approvalContext: Type.Optional(Type.String()),
|
|
71
|
-
expiresAt: Type.Optional(Type.Union([Type.String(), Type.Number()])),
|
|
72
|
-
about: Type.Optional(Type.String()),
|
|
73
|
-
candidateId: Type.Optional(Type.String()),
|
|
74
|
-
candidateIri: Type.Optional(Type.String()),
|
|
75
|
-
decision: Type.Optional(Type.Union([
|
|
76
|
-
Type.Literal('promoted'),
|
|
77
|
-
Type.Literal('rejected'),
|
|
78
|
-
Type.Literal('corrected'),
|
|
79
|
-
Type.Literal('rollback'),
|
|
80
|
-
Type.Literal('ignored'),
|
|
81
|
-
])),
|
|
82
|
-
userCorrection: Type.Optional(Type.String()),
|
|
83
|
-
}),
|
|
84
|
-
async execute(toolCallId, rawParams) {
|
|
85
|
-
const params = rawParams;
|
|
86
|
-
try {
|
|
87
|
-
const session = await getPodDataSession();
|
|
88
|
-
if (!session) {
|
|
89
|
-
return errorResult('No active LinX Pod session. Run /login or linx login before recording capture data.');
|
|
90
|
-
}
|
|
91
|
-
const db = createDb(session);
|
|
92
|
-
const result = await executeCaptureOperation({ db, webId: session.webId }, params, toolCallId);
|
|
93
|
-
return okResult(params.operation, result);
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
return errorResult(error instanceof Error ? error.message : String(error));
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
function createDefaultCaptureDb(session) {
|
|
102
|
-
if (!session.solidSession) {
|
|
103
|
-
throw new Error('Active LinX Pod session is missing a Solid session for capture persistence.');
|
|
104
|
-
}
|
|
105
|
-
return drizzle(session.solidSession, {
|
|
106
|
-
logger: false,
|
|
107
|
-
disableInteropDiscovery: true,
|
|
108
|
-
podUrl: session.podUrl,
|
|
109
|
-
resourcePreparation: 'best-effort',
|
|
110
|
-
schema: solidResources,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
async function executeCaptureOperation(context, params, toolCallId) {
|
|
114
|
-
switch (params.operation) {
|
|
115
|
-
case CaptureOperation.OBSERVED_CANDIDATE:
|
|
116
|
-
return persistObservedCapture(context, buildObservedInput(params));
|
|
117
|
-
case CaptureOperation.DIRECT_COMMIT_EVENT:
|
|
118
|
-
return recordCaptureCommit(context, {
|
|
119
|
-
...buildCommitInput(params),
|
|
120
|
-
decision: 'direct_commit',
|
|
121
|
-
});
|
|
122
|
-
case CaptureOperation.OPTIMISTIC_COMMIT_EVENT:
|
|
123
|
-
return recordCaptureCommit(context, {
|
|
124
|
-
...buildCommitInput(params),
|
|
125
|
-
decision: 'optimistic_commit',
|
|
126
|
-
});
|
|
127
|
-
case CaptureOperation.AMBIGUOUS_INPUT:
|
|
128
|
-
return persistAmbiguousCapture(context, {
|
|
129
|
-
...buildObservedInput(params),
|
|
130
|
-
inputRequestId: requireString(params, 'inputRequestId'),
|
|
131
|
-
session: requireString(params, 'session'),
|
|
132
|
-
prompt: requireString(params, 'prompt'),
|
|
133
|
-
inputOptions: params.inputOptions,
|
|
134
|
-
requestKind: params.requestKind,
|
|
135
|
-
requester: params.requester,
|
|
136
|
-
assignedTo: params.assignedTo,
|
|
137
|
-
inputContext: params.inputContext,
|
|
138
|
-
expiresAt: params.expiresAt,
|
|
139
|
-
});
|
|
140
|
-
case CaptureOperation.APPROVAL_REQUEST:
|
|
141
|
-
return requestCaptureApproval(context, {
|
|
142
|
-
...buildObservedInput(params),
|
|
143
|
-
approvalId: requireString(params, 'approvalId'),
|
|
144
|
-
session: requireString(params, 'session'),
|
|
145
|
-
toolCallId: params.toolCallId ?? toolCallId,
|
|
146
|
-
toolName: params.toolName,
|
|
147
|
-
target: requireString(params, 'target'),
|
|
148
|
-
action: requireString(params, 'action'),
|
|
149
|
-
risk: requireString(params, 'risk'),
|
|
150
|
-
approvalOptions: params.approvalOptions,
|
|
151
|
-
approvalContext: params.approvalContext,
|
|
152
|
-
assignedTo: params.assignedTo,
|
|
153
|
-
expiresAt: params.expiresAt,
|
|
154
|
-
});
|
|
155
|
-
case CaptureOperation.REVIEW_EVENT:
|
|
156
|
-
return recordCaptureReviewEvent(context, {
|
|
157
|
-
eventId: requireString(params, 'eventId'),
|
|
158
|
-
source: requireString(params, 'source'),
|
|
159
|
-
decision: params.decision ?? 'corrected',
|
|
160
|
-
candidateId: params.candidateId,
|
|
161
|
-
candidateIri: params.candidateIri,
|
|
162
|
-
targetResource: params.targetResource,
|
|
163
|
-
suggestedType: params.suggestedType,
|
|
164
|
-
suggestedTarget: params.suggestedTarget,
|
|
165
|
-
confidence: params.confidence,
|
|
166
|
-
reason: params.reason,
|
|
167
|
-
userCorrection: params.userCorrection,
|
|
168
|
-
approval: params.approval,
|
|
169
|
-
inputRequest: params.inputRequest,
|
|
170
|
-
actor: params.actor,
|
|
171
|
-
chat: params.chat,
|
|
172
|
-
thread: params.thread,
|
|
173
|
-
task: params.task,
|
|
174
|
-
run: params.run,
|
|
175
|
-
about: params.about,
|
|
176
|
-
metadata: params.metadata,
|
|
177
|
-
createdAt: params.createdAt,
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
function buildObservedInput(params) {
|
|
182
|
-
return {
|
|
183
|
-
id: requireString(params, 'id'),
|
|
184
|
-
eventId: requireString(params, 'eventId'),
|
|
185
|
-
source: requireString(params, 'source'),
|
|
186
|
-
summary: requireString(params, 'summary'),
|
|
187
|
-
suggestedType: params.suggestedType,
|
|
188
|
-
suggestedTarget: params.suggestedTarget,
|
|
189
|
-
confidence: params.confidence,
|
|
190
|
-
reason: params.reason,
|
|
191
|
-
actor: params.actor,
|
|
192
|
-
chat: params.chat,
|
|
193
|
-
thread: params.thread,
|
|
194
|
-
task: params.task,
|
|
195
|
-
run: params.run,
|
|
196
|
-
sourceHash: params.sourceHash,
|
|
197
|
-
metadata: params.metadata,
|
|
198
|
-
createdAt: params.createdAt,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
function buildCommitInput(params) {
|
|
202
|
-
return {
|
|
203
|
-
eventId: requireString(params, 'eventId'),
|
|
204
|
-
source: requireString(params, 'source'),
|
|
205
|
-
targetResource: requireString(params, 'targetResource'),
|
|
206
|
-
suggestedType: params.suggestedType,
|
|
207
|
-
suggestedTarget: params.suggestedTarget,
|
|
208
|
-
confidence: params.confidence,
|
|
209
|
-
reason: params.reason,
|
|
210
|
-
approval: params.approval,
|
|
211
|
-
inputRequest: params.inputRequest,
|
|
212
|
-
actor: params.actor,
|
|
213
|
-
chat: params.chat,
|
|
214
|
-
thread: params.thread,
|
|
215
|
-
task: params.task,
|
|
216
|
-
run: params.run,
|
|
217
|
-
about: params.about,
|
|
218
|
-
metadata: params.metadata,
|
|
219
|
-
createdAt: params.createdAt,
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
function requireString(params, key) {
|
|
223
|
-
const value = params[key];
|
|
224
|
-
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
225
|
-
throw new Error(`linx_capture ${params.operation} requires ${String(key)}`);
|
|
226
|
-
}
|
|
227
|
-
return value;
|
|
228
|
-
}
|
|
229
|
-
function okResult(operation, result) {
|
|
230
|
-
return {
|
|
231
|
-
content: [{ type: 'text', text: `Capture ${operation} recorded: ${JSON.stringify(result)}` }],
|
|
232
|
-
details: { operation, result },
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
function errorResult(message) {
|
|
236
|
-
return {
|
|
237
|
-
content: [{ type: 'text', text: message }],
|
|
238
|
-
details: { error: message },
|
|
239
|
-
isError: true,
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
//# sourceMappingURL=tool.js.map
|