@ftai/dsh-plugin-acn 0.0.0-stage → 0.1.1

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 (276) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/LICENSE-APACHE +201 -0
  3. package/LICENSE-MIT +19 -0
  4. package/README.md +82 -2
  5. package/README_EN.md +83 -0
  6. package/cordis.patch.yml +29 -0
  7. package/docs/acn-compat.md +33 -0
  8. package/docs/architecture.md +130 -0
  9. package/docs/assets/acn-claim-reuse.png +0 -0
  10. package/docs/assets/activity-view.png +0 -0
  11. package/docs/assets/install-package.png +0 -0
  12. package/docs/assets/knowledge-model.png +0 -0
  13. package/docs/assets/knowledge-view.png +0 -0
  14. package/docs/assets/personal-configuration.png +0 -0
  15. package/docs/assets/session-upstream.png +0 -0
  16. package/docs/assets/upstream-settings.png +0 -0
  17. package/docs/assets/upstream-team.png +0 -0
  18. package/docs/command-reference.md +201 -0
  19. package/docs/config.md +253 -0
  20. package/docs/development.md +197 -0
  21. package/docs/dsh-compat.md +59 -0
  22. package/docs/index.md +16 -0
  23. package/docs/outstanding-issues.md +61 -0
  24. package/docs/user_guide.md +185 -0
  25. package/icon.svg +8 -0
  26. package/lib/activities-B8U-iW4-.js +407 -0
  27. package/lib/alignment-CwH0nBf-.js +80 -0
  28. package/lib/auth-DFI9yowX.js +71 -0
  29. package/lib/checkpoint-CPFPOxBM.js +188 -0
  30. package/lib/checkpoint-c7aI4D-X.js +318 -0
  31. package/lib/claim-DOAGe8ZK.js +168 -0
  32. package/lib/client.js +18417 -0
  33. package/lib/deliver-C-dmhkfm.js +168 -0
  34. package/lib/delivery-status-M7-Rwoyj.js +89 -0
  35. package/lib/dispute-CtrInHzf.js +20 -0
  36. package/lib/disputes-ByEmi43j.js +51 -0
  37. package/lib/dream-agent-BVqxbKFc.js +249 -0
  38. package/lib/dream.js +4 -0
  39. package/lib/effects-DX1iy6FM.js +268 -0
  40. package/lib/errors-Bp_2WXBr.js +19 -0
  41. package/lib/errors-pPumDOGD.js +18 -0
  42. package/lib/evidence-store-DW7kj20i.js +1030 -0
  43. package/lib/formation-D4LO31WW.js +187 -0
  44. package/lib/formation-replay-Bf4TSBiz.js +87 -0
  45. package/lib/formation.js +9 -0
  46. package/lib/history-DPMHX3ZE.js +214 -0
  47. package/lib/inbox-2CugZZQm.js +188 -0
  48. package/lib/inbox-DFtE2fOp.js +71 -0
  49. package/lib/inbox.js +3 -0
  50. package/lib/index.js +1373 -0
  51. package/lib/lock-DbmlKOoX.js +332 -0
  52. package/lib/pages-BEWC3kmZ.js +51 -0
  53. package/lib/paths-B7NI9Ano.js +157 -0
  54. package/lib/plugins/commands.js +590 -0
  55. package/lib/plugins/dream.js +66 -0
  56. package/lib/plugins/formation.js +66 -0
  57. package/lib/plugins/inbox.js +53 -0
  58. package/lib/plugins/knowledge.js +1109 -0
  59. package/lib/plugins/prompt.js +102 -0
  60. package/lib/plugins/tools.js +280 -0
  61. package/lib/policy-DnyHh7Bl.js +16 -0
  62. package/lib/prepare-CGXwBEcu.js +134 -0
  63. package/lib/protocol.js +8 -0
  64. package/lib/queue-M917xHPS.js +153 -0
  65. package/lib/regular-file-BFpqMoub.js +136 -0
  66. package/lib/render-CJaVcKKC.js +48 -0
  67. package/lib/reported-sets-DdEKdeVb.js +122 -0
  68. package/lib/revision-DeoL_IUN.js +11 -0
  69. package/lib/scheduler-BfJSY1eq.js +64 -0
  70. package/lib/service-BPwaZzFF.js +1106 -0
  71. package/lib/service-BQaszW_v.js +344 -0
  72. package/lib/service-BhniAHLo.js +305 -0
  73. package/lib/service-C2lXoygJ.js +505 -0
  74. package/lib/session-binding-zCSuizHs.js +342 -0
  75. package/lib/session-state-CYqUhC95.js +38 -0
  76. package/lib/sessions-C2xuPFQv.js +218 -0
  77. package/lib/store.js +16 -0
  78. package/lib/structured-C9byFuzm.js +453 -0
  79. package/lib/subagent-yJsFxHmH.js +9 -0
  80. package/lib/team.js +3 -0
  81. package/lib/tool-schema-3b4gH1zf.js +28 -0
  82. package/lib/trace-Da0RnL5R.js +14 -0
  83. package/lib/traces-CHBo8y1z.js +11 -0
  84. package/lib/types/activities.d.ts +73 -0
  85. package/lib/types/advanced-configuration.d.ts +11 -0
  86. package/lib/types/client/ActivityCard.d.ts +14 -0
  87. package/lib/types/client/ActivityDetails.d.ts +18 -0
  88. package/lib/types/client/AdvancedPreferences.d.ts +8 -0
  89. package/lib/types/client/BlankCommandFeedback.d.ts +10 -0
  90. package/lib/types/client/ComposerMenu.d.ts +24 -0
  91. package/lib/types/client/ConfigurationPage.d.ts +11 -0
  92. package/lib/types/client/ConnectionCheckDialog.d.ts +12 -0
  93. package/lib/types/client/KnowledgeDetail.d.ts +6 -0
  94. package/lib/types/client/KnowledgeDirectoryField.d.ts +11 -0
  95. package/lib/types/client/KnowledgePanel.d.ts +12 -0
  96. package/lib/types/client/KnowledgeReference.d.ts +13 -0
  97. package/lib/types/client/SessionToolbar.d.ts +16 -0
  98. package/lib/types/client/SettingsToast.d.ts +3 -0
  99. package/lib/types/client/SourceSessionLink.d.ts +16 -0
  100. package/lib/types/client/TeamCredentialField.d.ts +16 -0
  101. package/lib/types/client/TeamSettingsPage.d.ts +28 -0
  102. package/lib/types/client/configuration-errors.d.ts +2 -0
  103. package/lib/types/client/interaction-styles.d.ts +1 -0
  104. package/lib/types/client/interaction-ui.d.ts +30 -0
  105. package/lib/types/client/knowledge-labels.d.ts +5 -0
  106. package/lib/types/client/locales.d.ts +51 -0
  107. package/lib/types/commands/claim.d.ts +4 -0
  108. package/lib/types/commands/import.d.ts +10 -0
  109. package/lib/types/commands/status.d.ts +5 -0
  110. package/lib/types/config.d.ts +111 -0
  111. package/lib/types/configuration.d.ts +235 -0
  112. package/lib/types/credentials.d.ts +59 -0
  113. package/lib/types/dream/audit.d.ts +4 -0
  114. package/lib/types/dream/autonomous.d.ts +185 -0
  115. package/lib/types/dream/candidates.d.ts +34 -0
  116. package/lib/types/dream/checkpoint.d.ts +35 -0
  117. package/lib/types/dream/evidence-files.d.ts +10 -0
  118. package/lib/types/dream/evidence-store.d.ts +103 -0
  119. package/lib/types/dream/evidence.d.ts +30 -0
  120. package/lib/types/dream/index.d.ts +10 -0
  121. package/lib/types/dream/plan.d.ts +18 -0
  122. package/lib/types/dream/preservation.d.ts +6 -0
  123. package/lib/types/dream/review.d.ts +10 -0
  124. package/lib/types/dream/schema.d.ts +1475 -0
  125. package/lib/types/dream/service.d.ts +56 -0
  126. package/lib/types/dream/sync.d.ts +147 -0
  127. package/lib/types/dsh-adapter/configuration-remote.d.ts +1 -0
  128. package/lib/types/dsh-adapter/configuration-service.d.ts +28 -0
  129. package/lib/types/dsh-adapter/dream-agent.d.ts +4 -0
  130. package/lib/types/dsh-adapter/dream-evidence.d.ts +3 -0
  131. package/lib/types/dsh-adapter/formation-archive.d.ts +3 -0
  132. package/lib/types/dsh-adapter/formation-replay.d.ts +5 -0
  133. package/lib/types/dsh-adapter/formation.d.ts +4 -0
  134. package/lib/types/dsh-adapter/interaction-service.d.ts +13 -0
  135. package/lib/types/dsh-adapter/knowledge-paths.d.ts +3 -0
  136. package/lib/types/dsh-adapter/llm.d.ts +10 -0
  137. package/lib/types/dsh-adapter/project-upstream.d.ts +4 -0
  138. package/lib/types/dsh-adapter/runtime-pool.d.ts +110 -0
  139. package/lib/types/dsh-adapter/session-binding.d.ts +43 -0
  140. package/lib/types/dsh-adapter/source-sessions.d.ts +3 -0
  141. package/lib/types/dsh-adapter/team-credentials.d.ts +5 -0
  142. package/lib/types/dsh-adapter/tool-schema.d.ts +4 -0
  143. package/lib/types/dsh-adapter/tools.d.ts +5 -0
  144. package/lib/types/formation/capture.d.ts +19 -0
  145. package/lib/types/formation/checkpoint.d.ts +136 -0
  146. package/lib/types/formation/index.d.ts +10 -0
  147. package/lib/types/formation/prepare.d.ts +16 -0
  148. package/lib/types/formation/schema.d.ts +45 -0
  149. package/lib/types/formation/service.d.ts +58 -0
  150. package/lib/types/formation/transcript.d.ts +75 -0
  151. package/lib/types/formation/triggers.d.ts +3 -0
  152. package/lib/types/inbox/cascade.d.ts +3 -0
  153. package/lib/types/inbox/effects.d.ts +275 -0
  154. package/lib/types/inbox/index.d.ts +5 -0
  155. package/lib/types/inbox/prepare.d.ts +380 -0
  156. package/lib/types/inbox/service.d.ts +26 -0
  157. package/lib/types/inbox/sync.d.ts +9 -0
  158. package/lib/types/index.d.ts +1 -0
  159. package/lib/types/interaction-messages.d.ts +69 -0
  160. package/lib/types/interaction.d.ts +541 -0
  161. package/lib/types/knowledge/alignment.d.ts +49 -0
  162. package/lib/types/knowledge/catalog.d.ts +5 -0
  163. package/lib/types/knowledge/changes.d.ts +32 -0
  164. package/lib/types/knowledge/disputes.d.ts +3 -0
  165. package/lib/types/knowledge/errors.d.ts +9 -0
  166. package/lib/types/knowledge/ordering.d.ts +7 -0
  167. package/lib/types/knowledge/pages.d.ts +7 -0
  168. package/lib/types/knowledge/safety.d.ts +2 -0
  169. package/lib/types/knowledge/service.d.ts +52 -0
  170. package/lib/types/knowledge/sessions.d.ts +59 -0
  171. package/lib/types/knowledge/sources.d.ts +2 -0
  172. package/lib/types/knowledge/timestamps.d.ts +1 -0
  173. package/lib/types/knowledge/types.d.ts +84 -0
  174. package/lib/types/llm/response.d.ts +1 -0
  175. package/lib/types/llm/structured.d.ts +27 -0
  176. package/lib/types/local-name.d.ts +1 -0
  177. package/lib/types/plugins/client.d.ts +9 -0
  178. package/lib/types/plugins/commands.d.ts +11 -0
  179. package/lib/types/plugins/configuration.d.ts +8 -0
  180. package/lib/types/plugins/dream.d.ts +16 -0
  181. package/lib/types/plugins/formation.d.ts +16 -0
  182. package/lib/types/plugins/inbox.d.ts +16 -0
  183. package/lib/types/plugins/knowledge.d.ts +19 -0
  184. package/lib/types/plugins/prompt.d.ts +17 -0
  185. package/lib/types/plugins/tools.d.ts +10 -0
  186. package/lib/types/prompt/render.d.ts +2 -0
  187. package/lib/types/protocol/arbitration.d.ts +154 -0
  188. package/lib/types/protocol/auth.d.ts +31 -0
  189. package/lib/types/protocol/claim.d.ts +36 -0
  190. package/lib/types/protocol/dispute.d.ts +17 -0
  191. package/lib/types/protocol/ids.d.ts +20 -0
  192. package/lib/types/protocol/inbox.d.ts +141 -0
  193. package/lib/types/protocol/index.d.ts +11 -0
  194. package/lib/types/protocol/policy.d.ts +21 -0
  195. package/lib/types/protocol/revision.d.ts +2 -0
  196. package/lib/types/protocol/router.d.ts +114 -0
  197. package/lib/types/protocol/schema.d.ts +4 -0
  198. package/lib/types/protocol/time.d.ts +5 -0
  199. package/lib/types/protocol/trace.d.ts +11 -0
  200. package/lib/types/store/atomic.d.ts +8 -0
  201. package/lib/types/store/claim-edits.d.ts +33 -0
  202. package/lib/types/store/claims.d.ts +7 -0
  203. package/lib/types/store/context.d.ts +13 -0
  204. package/lib/types/store/delivery-status.d.ts +48 -0
  205. package/lib/types/store/disputes.d.ts +6 -0
  206. package/lib/types/store/entities.d.ts +16 -0
  207. package/lib/types/store/errors.d.ts +8 -0
  208. package/lib/types/store/history.d.ts +65 -0
  209. package/lib/types/store/inbox.d.ts +27 -0
  210. package/lib/types/store/index.d.ts +16 -0
  211. package/lib/types/store/jobs.d.ts +5 -0
  212. package/lib/types/store/library-directory.d.ts +4 -0
  213. package/lib/types/store/lock.d.ts +11 -0
  214. package/lib/types/store/path-names.d.ts +2 -0
  215. package/lib/types/store/paths.d.ts +45 -0
  216. package/lib/types/store/presentation.d.ts +13 -0
  217. package/lib/types/store/regular-file.d.ts +2 -0
  218. package/lib/types/store/rejected-disputes.d.ts +18 -0
  219. package/lib/types/store/rename.d.ts +1 -0
  220. package/lib/types/store/reported-sets.d.ts +24 -0
  221. package/lib/types/store/session-state.d.ts +17 -0
  222. package/lib/types/store/traces.d.ts +6 -0
  223. package/lib/types/store/uploads.d.ts +312 -0
  224. package/lib/types/store/yaml.d.ts +8 -0
  225. package/lib/types/team/errors.d.ts +10 -0
  226. package/lib/types/team/http.d.ts +20 -0
  227. package/lib/types/team/index.d.ts +5 -0
  228. package/lib/types/team/maintainer-client.d.ts +18 -0
  229. package/lib/types/team/router-client.d.ts +14 -0
  230. package/lib/types/team/service.d.ts +28 -0
  231. package/lib/types/team/system-proxy.d.ts +9 -0
  232. package/lib/types/tools/claim.d.ts +63 -0
  233. package/lib/types/tools/consult-router.d.ts +11 -0
  234. package/lib/types/tools/subagent.d.ts +8 -0
  235. package/lib/types/tools/validation.d.ts +2 -0
  236. package/lib/types/upload/consolidation.d.ts +63 -0
  237. package/lib/types/upload/deliver.d.ts +15 -0
  238. package/lib/types/upload/index.d.ts +2 -0
  239. package/lib/types/upload/scheduler.d.ts +19 -0
  240. package/lib/types/upstreams.d.ts +5 -0
  241. package/lib/types/worker/queue.d.ts +17 -0
  242. package/lib/types/worker/types.d.ts +51 -0
  243. package/lib/types/worker/worker.d.ts +39 -0
  244. package/lib/types-C2ST2Zdg.js +17 -0
  245. package/lib/upload.js +3 -0
  246. package/lib/uploads-BCA2p92b.js +210 -0
  247. package/lib/upstreams-DEi-56tD.js +495 -0
  248. package/lib/worker-HMGzJFWd.js +185 -0
  249. package/locale/commands/en.json +1 -0
  250. package/locale/commands/zh.json +1 -0
  251. package/locale/dream/en.json +1 -0
  252. package/locale/dream/zh.json +1 -0
  253. package/locale/en.json +7 -0
  254. package/locale/formation/en.json +1 -0
  255. package/locale/formation/zh.json +1 -0
  256. package/locale/inbox/en.json +1 -0
  257. package/locale/inbox/zh.json +1 -0
  258. package/locale/knowledge/en.json +1 -0
  259. package/locale/knowledge/zh.json +1 -0
  260. package/locale/prompt/en.json +1 -0
  261. package/locale/prompt/zh.json +1 -0
  262. package/locale/tools/en.json +1 -0
  263. package/locale/tools/zh.json +1 -0
  264. package/locale/zh.json +7 -0
  265. package/package.json +262 -3
  266. package/prompts/claim_dream.j2 +77 -0
  267. package/prompts/claim_dream_legacy.j2 +63 -0
  268. package/prompts/dream_compaction.j2 +11 -0
  269. package/prompts/dream_evidence.j2 +5 -0
  270. package/prompts/inbox_claim_attribute_update_internalize.j2 +112 -0
  271. package/prompts/inbox_policy_update_internalize.j2 +87 -0
  272. package/prompts/knowledge.j2 +38 -0
  273. package/prompts/session_recap.j2 +113 -0
  274. package/prompts/what_is_claim.j2 +51 -0
  275. package/prompts/what_is_dispute.j2 +21 -0
  276. package/prompts/what_is_policy.j2 +22 -0
@@ -0,0 +1,8 @@
1
+ export declare function isSubagent(header: {
2
+ origin?: string;
3
+ delegationDepth?: number;
4
+ }): boolean;
5
+ export declare function isEvidenceAgent(header: {
6
+ origin?: string;
7
+ agentPreset?: string;
8
+ }): boolean;
@@ -0,0 +1,2 @@
1
+ import type { z } from 'zod';
2
+ export declare function validationMessage(error: z.ZodError): string;
@@ -0,0 +1,63 @@
1
+ import type { Claim } from '../protocol/claim.js';
2
+ import type { ClaimId } from '../protocol/ids.js';
3
+ import type { z } from 'zod';
4
+ import type { ConsolidationDeliverySchema } from '../store/uploads.js';
5
+ export type ConsolidationDelivery = z.infer<typeof ConsolidationDeliverySchema>;
6
+ export declare function relatedIds(groups: readonly ConsolidationDelivery[]): Set<ClaimId>;
7
+ export declare function consolidationReady(claim: Claim, groups: readonly ConsolidationDelivery[], acknowledged: readonly Claim[], current: readonly Claim[]): boolean;
8
+ export declare function pruneDeliveries(groups: readonly ConsolidationDelivery[], acknowledgements: readonly Claim[], pending: readonly Claim[]): {
9
+ consolidations: {
10
+ before: {
11
+ id: string & z.core.$brand<"ClaimId">;
12
+ name: string;
13
+ statement: string;
14
+ scope: string;
15
+ holder: string & z.core.$brand<"AgentId">;
16
+ confidence: "high" | "medium" | "low";
17
+ status: "active" | "stale" | "deprecated";
18
+ created_at: string;
19
+ source_claim_ids: ((string & z.core.$brand<"ClaimId">) | (string & z.core.$brand<"PolicyId">))[];
20
+ evidence_summary: string;
21
+ updated_at?: string | undefined;
22
+ };
23
+ retired: {
24
+ id: string & z.core.$brand<"ClaimId">;
25
+ name: string;
26
+ statement: string;
27
+ scope: string;
28
+ holder: string & z.core.$brand<"AgentId">;
29
+ confidence: "high" | "medium" | "low";
30
+ status: "active" | "stale" | "deprecated";
31
+ created_at: string;
32
+ source_claim_ids: ((string & z.core.$brand<"ClaimId">) | (string & z.core.$brand<"PolicyId">))[];
33
+ evidence_summary: string;
34
+ updated_at?: string | undefined;
35
+ };
36
+ carriers: {
37
+ id: string & z.core.$brand<"ClaimId">;
38
+ name: string;
39
+ statement: string;
40
+ scope: string;
41
+ holder: string & z.core.$brand<"AgentId">;
42
+ confidence: "high" | "medium" | "low";
43
+ status: "active" | "stale" | "deprecated";
44
+ created_at: string;
45
+ source_claim_ids: ((string & z.core.$brand<"ClaimId">) | (string & z.core.$brand<"PolicyId">))[];
46
+ evidence_summary: string;
47
+ updated_at?: string | undefined;
48
+ }[];
49
+ }[];
50
+ acknowledgements: {
51
+ id: string & z.core.$brand<"ClaimId">;
52
+ name: string;
53
+ statement: string;
54
+ scope: string;
55
+ holder: string & z.core.$brand<"AgentId">;
56
+ confidence: "high" | "medium" | "low";
57
+ status: "active" | "stale" | "deprecated";
58
+ created_at: string;
59
+ source_claim_ids: ((string & z.core.$brand<"ClaimId">) | (string & z.core.$brand<"PolicyId">))[];
60
+ evidence_summary: string;
61
+ updated_at?: string | undefined;
62
+ }[];
63
+ };
@@ -0,0 +1,15 @@
1
+ import type { StoreContext } from '../store/context.js';
2
+ import type { TeamFacade } from '../team/service.js';
3
+ export interface DeliveryReport {
4
+ deliveredClaims: number;
5
+ deliveredDisputes: number;
6
+ pendingClaims: number;
7
+ pendingDisputes: number;
8
+ warnings: string[];
9
+ }
10
+ export declare class UploadDelivery {
11
+ readonly context: StoreContext;
12
+ readonly team: TeamFacade | null;
13
+ constructor(context: StoreContext, team: TeamFacade | null);
14
+ deliver(signal?: AbortSignal): Promise<DeliveryReport>;
15
+ }
@@ -0,0 +1,2 @@
1
+ export * from './deliver.js';
2
+ export * from './scheduler.js';
@@ -0,0 +1,19 @@
1
+ import type { AcnKnowledge } from '../knowledge/service.js';
2
+ import { UploadDelivery } from './deliver.js';
3
+ export declare class UploadScheduler {
4
+ readonly knowledge: AcnKnowledge;
5
+ private readonly intervalMs;
6
+ private pending;
7
+ private requested;
8
+ private closed;
9
+ private readonly abort;
10
+ private timer;
11
+ private unsubscribe;
12
+ readonly delivery: UploadDelivery;
13
+ constructor(knowledge: AcnKnowledge, intervalMs?: number);
14
+ start(): void;
15
+ kick(): void;
16
+ private run;
17
+ flush(): Promise<void>;
18
+ close(): Promise<void>;
19
+ }
@@ -0,0 +1,5 @@
1
+ import type { ResolvedConfig } from './config.js';
2
+ export { upstreamsOf } from './config.js';
3
+ export declare function resolveUpstream(config: ResolvedConfig, key: string, includeDisabled?: boolean): ResolvedConfig | undefined;
4
+ export declare function defaultUpstream(config: ResolvedConfig): string;
5
+ export declare function canonicalProjectPath(cwd: string): Promise<string>;
@@ -0,0 +1,17 @@
1
+ import type { StoreContext } from '../store/context.js';
2
+ import type { Job, JobKind } from './types.js';
3
+ export declare function runnableJob(job: Job, kinds: Pick<ReadonlySet<JobKind>, 'has'>, now?: number): boolean;
4
+ export declare class JobQueue {
5
+ readonly context: StoreContext;
6
+ constructor(context: StoreContext);
7
+ list(): Promise<Job[]>;
8
+ read(id: string): Promise<Job | null>;
9
+ private write;
10
+ private locked;
11
+ enqueue(kind: JobKind, payload: Job['payload'], sessionId?: string): Promise<Job>;
12
+ recoverRunning(): Promise<void>;
13
+ claim(kinds: ReadonlySet<JobKind>): Promise<Job | null>;
14
+ settle(job: Job, state: Job['state'], details?: Partial<Pick<Job, 'lastError' | 'lastErrorKind' | 'nextRunAt' | 'result' | 'attempts'>>): Promise<void>;
15
+ pauseDream(paused: boolean): Promise<Job[]>;
16
+ retry(id: string): Promise<Job>;
17
+ }
@@ -0,0 +1,51 @@
1
+ import { z } from 'zod';
2
+ export declare const JobKindSchema: z.ZodEnum<{
3
+ inbox: "inbox";
4
+ dream: "dream";
5
+ finalize: "finalize";
6
+ recap: "recap";
7
+ }>;
8
+ export type JobKind = z.infer<typeof JobKindSchema>;
9
+ export declare const JobSchema: z.ZodObject<{
10
+ schemaVersion: z.ZodLiteral<1>;
11
+ id: z.ZodString;
12
+ kind: z.ZodEnum<{
13
+ inbox: "inbox";
14
+ dream: "dream";
15
+ finalize: "finalize";
16
+ recap: "recap";
17
+ }>;
18
+ sessionId: z.ZodOptional<z.ZodString>;
19
+ payload: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
20
+ state: z.ZodEnum<{
21
+ queued: "queued";
22
+ running: "running";
23
+ succeeded: "succeeded";
24
+ failed: "failed";
25
+ }>;
26
+ attempts: z.ZodNumber;
27
+ createdAt: z.ZodNumber;
28
+ updatedAt: z.ZodNumber;
29
+ ordinal: z.ZodOptional<z.ZodNumber>;
30
+ nextRunAt: z.ZodOptional<z.ZodNumber>;
31
+ lastError: z.ZodOptional<z.ZodString>;
32
+ lastErrorKind: z.ZodOptional<z.ZodString>;
33
+ result: z.ZodOptional<z.ZodJSONSchema>;
34
+ }, z.core.$strict>;
35
+ export type Job = z.infer<typeof JobSchema>;
36
+ export declare const jobPriority: Record<JobKind, number>;
37
+ export declare class JobError extends Error {
38
+ readonly kind: string;
39
+ readonly retryable: boolean;
40
+ readonly retryAfterMs?: number | undefined;
41
+ constructor(kind: string, message: string, retryable?: boolean, retryAfterMs?: number | undefined);
42
+ }
43
+ export declare class Preempted extends JobError {
44
+ constructor();
45
+ }
46
+ export declare class DreamStopped extends JobError {
47
+ constructor();
48
+ }
49
+ export declare class DreamYield extends JobError {
50
+ constructor();
51
+ }
@@ -0,0 +1,39 @@
1
+ import type { StoreContext } from '../store/context.js';
2
+ import { JobQueue } from './queue.js';
3
+ import { DreamStopped } from './types.js';
4
+ import type { Job, JobKind } from './types.js';
5
+ export interface JobControl {
6
+ signal: AbortSignal;
7
+ prepared(): void;
8
+ committed?(): void;
9
+ }
10
+ export type JobHandler = (job: Job, control: JobControl) => Promise<Job['result']>;
11
+ export declare class DurableWorker {
12
+ readonly context: StoreContext;
13
+ private readonly options;
14
+ readonly queue: JobQueue;
15
+ private readonly handlers;
16
+ private lease;
17
+ private active;
18
+ private timer;
19
+ private ticking;
20
+ private closed;
21
+ private started;
22
+ private nextAcquire;
23
+ constructor(context: StoreContext, options?: {
24
+ pollMs?: number;
25
+ takeoverMs?: number;
26
+ retryBaseMs?: number;
27
+ staleMs?: number;
28
+ });
29
+ register(kind: JobKind, handler: JobHandler): () => void;
30
+ supports(kind: JobKind): boolean;
31
+ canRun(job: Job): boolean;
32
+ start(): Promise<void>;
33
+ wake(force?: boolean): void;
34
+ enqueue(kind: JobKind, payload: Job['payload'], sessionId?: string): Promise<Job>;
35
+ retry(id: string): Promise<Job>;
36
+ cancelDream(reason?: DreamStopped): void;
37
+ private tick;
38
+ close(): Promise<void>;
39
+ }
@@ -0,0 +1,17 @@
1
+ import { a as TextSchema, l as ClaimIdSchema, n as ClaimStatusSchema, r as ConfidenceSchema } from "./claim-DOAGe8ZK.js";
2
+ import { z } from "zod";
3
+ //#region src/knowledge/types.ts
4
+ const DEFAULT_TRACE_TASK_PAGE_LIMIT = 4e3;
5
+ const MAX_TRACE_TASK_PAGE_LIMIT = 16e3;
6
+ const ClaimUpdateSchema = z.strictObject({
7
+ id: ClaimIdSchema,
8
+ expected_revision: z.string(),
9
+ name: TextSchema.optional(),
10
+ statement: TextSchema.optional(),
11
+ scope: TextSchema.optional(),
12
+ evidence_summary: TextSchema.optional(),
13
+ confidence: ConfidenceSchema.optional(),
14
+ status: ClaimStatusSchema.optional()
15
+ });
16
+ //#endregion
17
+ export { DEFAULT_TRACE_TASK_PAGE_LIMIT as n, MAX_TRACE_TASK_PAGE_LIMIT as r, ClaimUpdateSchema as t };
package/lib/upload.js ADDED
@@ -0,0 +1,3 @@
1
+ import { t as UploadDelivery } from "./deliver-C-dmhkfm.js";
2
+ import { t as UploadScheduler } from "./scheduler-BfJSY1eq.js";
3
+ export { UploadDelivery, UploadScheduler };
@@ -0,0 +1,210 @@
1
+ import { S as timestampNanos, i as effectiveUpdatedAt, l as ClaimIdSchema, t as ClaimSchema, u as DisputeIdSchema, x as nowSeconds, y as TimestampSchema } from "./claim-DOAGe8ZK.js";
2
+ import { n as claimRevision } from "./revision-DeoL_IUN.js";
3
+ import { C as StoreError, c as readYamlOr, d as removeFile, l as writeYamlAtomic, n as withFileLock } from "./lock-DbmlKOoX.js";
4
+ import { l as sameClaim } from "./alignment-CwH0nBf-.js";
5
+ import { t as DisputeSchema } from "./dispute-CtrInHzf.js";
6
+ import { z } from "zod";
7
+ import { createHash } from "node:crypto";
8
+ //#region src/upload/consolidation.ts
9
+ function relatedIds(groups) {
10
+ return new Set(groups.flatMap((group) => [group.retired.id, ...group.carriers.map((claim) => claim.id)]));
11
+ }
12
+ function carrierReady(claim, groups, acknowledged, current, visiting) {
13
+ if (claim.status !== "deprecated" && current.some((value) => sameClaim(value, claim)) && acknowledged.some((value) => sameClaim(value, claim))) return true;
14
+ if (visiting.has(claim.id)) return false;
15
+ visiting.add(claim.id);
16
+ const result = groups.some((group) => sameClaim(group.before, claim) && current.some((value) => sameClaim(value, group.retired)) && group.carriers.length > 0 && group.carriers.every((carrier) => carrierReady(carrier, groups, acknowledged, current, visiting)));
17
+ visiting.delete(claim.id);
18
+ return result;
19
+ }
20
+ function consolidationReady(claim, groups, acknowledged, current) {
21
+ return groups.filter((group) => sameClaim(group.retired, claim)).every((group) => group.carriers.length > 0 && group.carriers.every((carrier) => carrierReady(carrier, groups, acknowledged, current, /* @__PURE__ */ new Set())));
22
+ }
23
+ function pruneDeliveries(groups, acknowledgements, pending) {
24
+ const keep = new Set(groups.filter((group) => pending.some((claim) => sameClaim(claim, group.retired))));
25
+ let size = -1;
26
+ while (size !== keep.size) {
27
+ size = keep.size;
28
+ for (const group of keep) for (const carrier of group.carriers) for (const next of groups) if (sameClaim(next.before, carrier)) keep.add(next);
29
+ }
30
+ const retained = groups.filter((group) => keep.has(group));
31
+ const related = relatedIds(retained);
32
+ return {
33
+ consolidations: retained,
34
+ acknowledgements: acknowledgements.filter((claim) => related.has(claim.id))
35
+ };
36
+ }
37
+ //#endregion
38
+ //#region src/store/rejected-disputes.ts
39
+ const RejectionsSchema = z.record(z.string().regex(/^[0-9a-f]{64}$/), z.object({
40
+ dispute_id: DisputeIdSchema,
41
+ status: z.literal(409),
42
+ attempts: z.number().int().positive().default(1),
43
+ rejected_at: TimestampSchema
44
+ }));
45
+ const disputeVersion = (dispute) => createHash("sha256").update(JSON.stringify(DisputeSchema.parse(dispute))).digest("hex");
46
+ var RejectedDisputeStore = class {
47
+ context;
48
+ constructor(context) {
49
+ this.context = context;
50
+ }
51
+ async read(includeHistory = false) {
52
+ if (this.context.mode === "solo" && !includeHistory) return {};
53
+ return readYamlOr(this.context.paths.rejectedDisputes, RejectionsSchema, () => ({}));
54
+ }
55
+ async contains(dispute) {
56
+ return Object.hasOwn(await this.read(), disputeVersion(dispute));
57
+ }
58
+ async record(dispute, attempts = 1) {
59
+ if (this.context.mode === "solo") return;
60
+ await withFileLock(`${this.context.paths.rejectedDisputes}.lock`, async () => {
61
+ const records = await this.read();
62
+ const key = disputeVersion(dispute);
63
+ if (Object.hasOwn(records, key)) return;
64
+ records[key] = {
65
+ dispute_id: dispute.id,
66
+ status: 409,
67
+ attempts,
68
+ rejected_at: nowSeconds()
69
+ };
70
+ await writeYamlAtomic(this.context.paths.rejectedDisputes, records, RejectionsSchema, this.context.logger);
71
+ }, { timeoutMs: this.context.lockTimeoutMs });
72
+ }
73
+ };
74
+ //#endregion
75
+ //#region src/store/uploads.ts
76
+ const ConsolidationDeliverySchema = z.object({
77
+ before: ClaimSchema,
78
+ retired: ClaimSchema,
79
+ carriers: z.array(ClaimSchema)
80
+ });
81
+ const PendingUploadsSchema = z.object({
82
+ consolidations: z.array(ConsolidationDeliverySchema).default([]).transform((items) => items.length === 0 ? void 0 : items),
83
+ acknowledgements: z.array(ClaimSchema).default([]).transform((items) => items.length === 0 ? void 0 : items),
84
+ claims: z.array(ClaimSchema).default([]),
85
+ durable_claim_ids: z.array(ClaimIdSchema).default([]).transform((items) => items.length === 0 ? void 0 : [...new Set(items)].sort()),
86
+ disputes: z.array(DisputeSchema).default([])
87
+ });
88
+ var UploadStore = class {
89
+ context;
90
+ constructor(context) {
91
+ this.context = context;
92
+ }
93
+ async read() {
94
+ if (this.context.mode === "solo") return PendingUploadsSchema.parse({});
95
+ return readYamlOr(this.context.paths.pendingUploads, PendingUploadsSchema, () => PendingUploadsSchema.parse({}));
96
+ }
97
+ async save(value) {
98
+ if (this.context.mode === "solo") return;
99
+ await this.modify(() => PendingUploadsSchema.parse(value));
100
+ }
101
+ async persist(value) {
102
+ if (value.claims.length === 0 && value.disputes.length === 0 && !value.consolidations?.length && !value.acknowledgements?.length) await removeFile(this.context.paths.pendingUploads, this.context.logger);
103
+ else await writeYamlAtomic(this.context.paths.pendingUploads, value, PendingUploadsSchema, this.context.logger);
104
+ }
105
+ async modify(update) {
106
+ if (this.context.mode === "solo") return;
107
+ await withFileLock(this.context.paths.pendingUploadsLock, async () => {
108
+ await this.persist(PendingUploadsSchema.parse(await update(await this.read())));
109
+ }, { timeoutMs: this.context.lockTimeoutMs });
110
+ }
111
+ async enqueue(claims, disputes, durable = false, dependencies = []) {
112
+ if (this.context.mode === "solo") return;
113
+ await this.modify(async (pending) => {
114
+ const rejected = await new RejectedDisputeStore(this.context).read();
115
+ const byClaim = new Map(pending.claims.map((claim) => [claim.id, claim]));
116
+ let consolidations = pending.consolidations ?? [];
117
+ for (const value of claims) {
118
+ const claim = ClaimSchema.parse(value);
119
+ const existing = byClaim.get(claim.id);
120
+ if (existing !== void 0 && timestampNanos(effectiveUpdatedAt(claim)) < timestampNanos(effectiveUpdatedAt(existing))) continue;
121
+ consolidations = claim.status === "deprecated" ? consolidations.map((group) => group.retired.id === claim.id ? {
122
+ ...group,
123
+ retired: claim
124
+ } : group) : consolidations.filter((group) => group.retired.id !== claim.id);
125
+ byClaim.set(claim.id, claim);
126
+ }
127
+ const byDispute = new Map(pending.disputes.map((dispute) => [dispute.id, dispute]));
128
+ for (const value of disputes) {
129
+ const dispute = DisputeSchema.parse(value);
130
+ if (Object.hasOwn(rejected, disputeVersion(dispute))) continue;
131
+ const existing = byDispute.get(dispute.id);
132
+ if (existing === void 0 || timestampNanos(dispute.created_at) >= timestampNanos(existing.created_at)) byDispute.set(dispute.id, dispute);
133
+ }
134
+ const durableIds = new Set(pending.durable_claim_ids ?? []);
135
+ if (durable) for (const claim of claims) durableIds.add(claim.id);
136
+ for (const dependency of dependencies) if (byClaim.get(dependency.retired.id) !== void 0 && sameClaim(byClaim.get(dependency.retired.id) ?? dependency.before, dependency.retired)) {
137
+ consolidations = consolidations.filter((group) => group.retired.id !== dependency.retired.id);
138
+ consolidations.push(ConsolidationDeliverySchema.parse(dependency));
139
+ }
140
+ return PendingUploadsSchema.parse({
141
+ ...pending,
142
+ consolidations,
143
+ claims: [...byClaim.values()].sort((a, b) => a.id.localeCompare(b.id)),
144
+ durable_claim_ids: [...durableIds].filter((id) => byClaim.has(id)).sort(),
145
+ disputes: [...byDispute.values()].sort((a, b) => a.id.localeCompare(b.id))
146
+ });
147
+ });
148
+ }
149
+ async removeDeliveredClaims(delivered) {
150
+ if (this.context.mode === "solo") return;
151
+ const revisions = new Map(delivered.map((claim) => [claim.id, claimRevision(claim)]));
152
+ await this.modify((pending) => {
153
+ const claims = pending.claims.filter((claim) => revisions.get(claim.id) !== claimRevision(claim));
154
+ const ids = new Set(claims.map((claim) => claim.id));
155
+ const acknowledgements = [...pending.acknowledgements ?? []];
156
+ for (const claim of delivered) {
157
+ const index = acknowledgements.findIndex((value) => value.id === claim.id);
158
+ if (index >= 0) acknowledgements.splice(index, 1);
159
+ acknowledgements.push(claim);
160
+ }
161
+ return PendingUploadsSchema.parse({
162
+ ...pending,
163
+ ...pruneDeliveries(pending.consolidations ?? [], acknowledgements, claims),
164
+ claims,
165
+ durable_claim_ids: pending.durable_claim_ids?.filter((id) => ids.has(id))
166
+ });
167
+ });
168
+ }
169
+ async rebind(previous, revised) {
170
+ if (this.context.mode === "solo") throw new StoreError("conflict", "Team delivery is disabled.");
171
+ await this.modify((pending) => {
172
+ const exact = (group, value) => sameClaim(group.before, value.before) && sameClaim(group.retired, value.retired) && group.carriers.length === value.carriers.length && group.carriers.every((claim, index) => value.carriers[index] !== void 0 && sameClaim(claim, value.carriers[index]));
173
+ if (pending.consolidations?.some((group) => exact(group, revised))) return pending;
174
+ if (!pending.consolidations?.some((group) => exact(group, previous)) || !pending.claims.some((claim) => sameClaim(claim, previous.retired))) throw new StoreError("conflict", "Consolidation dependency changed; review current versions.");
175
+ const claims = pending.claims.filter((claim) => !revised.carriers.some((carrier) => carrier.id === claim.id));
176
+ claims.push(...revised.carriers);
177
+ return PendingUploadsSchema.parse({
178
+ ...pending,
179
+ claims,
180
+ durable_claim_ids: [.../* @__PURE__ */ new Set([...pending.durable_claim_ids ?? [], ...revised.carriers.map((claim) => claim.id)])],
181
+ consolidations: [...pending.consolidations.filter((group) => group.retired.id !== revised.retired.id), revised]
182
+ });
183
+ });
184
+ }
185
+ async removeDeliveredDisputes(delivered) {
186
+ if (this.context.mode === "solo") return;
187
+ const encoded = new Set(delivered.map((dispute) => JSON.stringify(DisputeSchema.parse(dispute))));
188
+ await this.modify((pending) => PendingUploadsSchema.parse({
189
+ ...pending,
190
+ disputes: pending.disputes.filter((dispute) => !encoded.has(JSON.stringify(dispute)))
191
+ }));
192
+ }
193
+ async withdrawPolicy(policyId) {
194
+ if (this.context.mode === "solo") return;
195
+ await this.modify((pending) => {
196
+ const obsolete = (pending.consolidations ?? []).filter((group) => group.before.source_claim_ids.includes(policyId) || group.retired.source_claim_ids.includes(policyId));
197
+ const obsoleteIds = new Set(obsolete.map((group) => group.retired.id));
198
+ const carriers = new Set(obsolete.flatMap((group) => group.carriers.map((claim) => claim.id)));
199
+ const retained = (pending.consolidations ?? []).filter((group) => !obsoleteIds.has(group.retired.id));
200
+ const stillNeeded = new Set(retained.flatMap((group) => group.carriers.map((claim) => claim.id)));
201
+ return PendingUploadsSchema.parse({
202
+ ...pending,
203
+ consolidations: retained,
204
+ claims: pending.claims.filter((claim) => !carriers.has(claim.id) || stillNeeded.has(claim.id) || pending.durable_claim_ids?.includes(claim.id) || claim.source_claim_ids.some((source) => source === policyId))
205
+ });
206
+ });
207
+ }
208
+ };
209
+ //#endregion
210
+ export { disputeVersion as a, RejectedDisputeStore as i, PendingUploadsSchema as n, consolidationReady as o, UploadStore as r, relatedIds as s, ConsolidationDeliverySchema as t };