@undefineds.co/linx 0.3.20 → 0.3.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 (97) hide show
  1. package/dist/generated/version.js +1 -1
  2. package/dist/index.js +6 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/auto-mode/pod-persistence.js +53 -3
  5. package/dist/lib/auto-mode/pod-persistence.js.map +1 -1
  6. package/dist/lib/auto-mode/secretary.js +2 -2
  7. package/dist/lib/auto-mode/secretary.js.map +1 -1
  8. package/dist/lib/chat-api.js +23 -61
  9. package/dist/lib/chat-api.js.map +1 -1
  10. package/dist/lib/codex-plugin/index.js +1 -0
  11. package/dist/lib/codex-plugin/index.js.map +1 -1
  12. package/dist/lib/codex-plugin/symphony-mcp.js +335 -0
  13. package/dist/lib/codex-plugin/symphony-mcp.js.map +1 -0
  14. package/dist/lib/linx-cloud-errors.js +0 -5
  15. package/dist/lib/linx-cloud-errors.js.map +1 -1
  16. package/dist/lib/linx-status-line.js +1 -8
  17. package/dist/lib/linx-status-line.js.map +1 -1
  18. package/dist/lib/models.js +3 -2
  19. package/dist/lib/models.js.map +1 -1
  20. package/dist/lib/pi-adapter/auth.js +68 -0
  21. package/dist/lib/pi-adapter/auth.js.map +1 -0
  22. package/dist/lib/pi-adapter/branding.js +34 -103
  23. package/dist/lib/pi-adapter/branding.js.map +1 -1
  24. package/dist/lib/pi-adapter/interactive.js +35 -49
  25. package/dist/lib/pi-adapter/interactive.js.map +1 -1
  26. package/dist/lib/pi-adapter/pod-mirror.js +38 -107
  27. package/dist/lib/pi-adapter/pod-mirror.js.map +1 -1
  28. package/dist/lib/pi-adapter/pod-native.js +2 -0
  29. package/dist/lib/pi-adapter/pod-native.js.map +1 -1
  30. package/dist/lib/pi-adapter/pod-tools.js +140 -0
  31. package/dist/lib/pi-adapter/pod-tools.js.map +1 -0
  32. package/dist/lib/pi-adapter/runtime.js +2 -12
  33. package/dist/lib/pi-adapter/runtime.js.map +1 -1
  34. package/dist/lib/pi-adapter/session.js +13 -17
  35. package/dist/lib/pi-adapter/session.js.map +1 -1
  36. package/dist/lib/pi-adapter/stream.js +2 -20
  37. package/dist/lib/pi-adapter/stream.js.map +1 -1
  38. package/dist/lib/pod-chat-store.js +53 -4
  39. package/dist/lib/pod-chat-store.js.map +1 -1
  40. package/dist/lib/resource-identity.js +2 -0
  41. package/dist/lib/resource-identity.js.map +1 -0
  42. package/dist/lib/status-line-command.js +2 -2
  43. package/dist/lib/status-line-command.js.map +1 -1
  44. package/dist/lib/symphony/archive.js +15 -37
  45. package/dist/lib/symphony/archive.js.map +1 -1
  46. package/dist/lib/symphony/pod-projection.js +189 -1346
  47. package/dist/lib/symphony/pod-projection.js.map +1 -1
  48. package/dist/lib/symphony-command.js +209 -109
  49. package/dist/lib/symphony-command.js.map +1 -1
  50. package/dist/plugins/linx-symphony-codex/.codex-plugin/plugin.json +38 -0
  51. package/dist/plugins/linx-symphony-codex/.mcp.json +10 -0
  52. package/dist/plugins/linx-symphony-codex/README.md +9 -0
  53. package/dist/plugins/linx-symphony-codex/hooks.json +60 -0
  54. package/dist/plugins/linx-symphony-codex/scripts/symphony-hook-events.mjs +119 -0
  55. package/dist/plugins/linx-symphony-codex/scripts/symphony-mcp.mjs +335 -0
  56. package/dist/plugins/linx-symphony-codex/skills/symphony/SKILL.md +791 -0
  57. package/dist/skills/symphony/SKILL.md +7 -0
  58. package/dist/skills/xpod-cli/SKILL.md +2 -13
  59. package/package.json +4 -4
  60. package/vendor/agent-runtime/dist/chat-reconciler.d.ts +33 -0
  61. package/vendor/agent-runtime/dist/chat-reconciler.js +108 -0
  62. package/vendor/agent-runtime/dist/index.d.ts +4 -1
  63. package/vendor/agent-runtime/dist/index.js +4 -1
  64. package/vendor/agent-runtime/dist/matrix-client.d.ts +149 -0
  65. package/vendor/agent-runtime/dist/matrix-client.js +220 -0
  66. package/vendor/agent-runtime/dist/pod-resource-identity.d.ts +17 -0
  67. package/vendor/agent-runtime/dist/pod-resource-identity.js +54 -0
  68. package/vendor/agent-runtime/dist/reconciler.d.ts +0 -11
  69. package/vendor/agent-runtime/dist/reconciler.js +5 -43
  70. package/vendor/agent-runtime/dist/symphony.d.ts +272 -27
  71. package/vendor/agent-runtime/dist/symphony.js +1268 -21
  72. package/vendor/agent-runtime/dist/workspace.d.ts +61 -0
  73. package/vendor/agent-runtime/dist/workspace.js +81 -0
  74. package/vendor/agent-runtime/package.json +5 -1
  75. package/vendor/stores/dist/current-pod-base.d.ts +2 -0
  76. package/vendor/stores/dist/current-pod-base.js +14 -0
  77. package/vendor/stores/dist/exact-records.d.ts +7 -0
  78. package/vendor/stores/dist/exact-records.js +87 -0
  79. package/vendor/stores/dist/index.d.ts +1 -0
  80. package/vendor/stores/dist/index.js +1 -0
  81. package/vendor/stores/dist/login.d.ts +51 -0
  82. package/vendor/stores/dist/login.js +195 -0
  83. package/vendor/stores/dist/pod-collection.d.ts +28 -0
  84. package/vendor/stores/dist/pod-collection.js +194 -0
  85. package/vendor/stores/dist/pod-write-guard.d.ts +5 -0
  86. package/vendor/stores/dist/pod-write-guard.js +133 -0
  87. package/vendor/stores/dist/symphony-control.d.ts +245 -0
  88. package/vendor/stores/dist/symphony-control.js +2175 -0
  89. package/vendor/stores/package.json +14 -0
  90. package/dist/lib/capture/persistence.js +0 -377
  91. package/dist/lib/capture/persistence.js.map +0 -1
  92. package/dist/lib/capture/tool.js +0 -242
  93. package/dist/lib/capture/tool.js.map +0 -1
  94. package/dist/skills/basic/SKILL.md +0 -46
  95. package/dist/skills/capture/SKILL.md +0 -165
  96. package/vendor/agent-runtime/dist/coordination.d.ts +0 -93
  97. 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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"}
@@ -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