@contractspec/example.kb-update-pipeline 1.56.1 → 1.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.turbo/turbo-build.log +59 -56
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +30 -0
  4. package/dist/browser/docs/index.js +43 -0
  5. package/dist/browser/docs/kb-update-pipeline.docblock.js +43 -0
  6. package/dist/browser/entities/index.js +56 -0
  7. package/dist/browser/entities/models.js +56 -0
  8. package/dist/browser/events.js +132 -0
  9. package/dist/browser/example.js +35 -0
  10. package/dist/browser/handlers/index.js +109 -0
  11. package/dist/browser/handlers/memory.handlers.js +109 -0
  12. package/dist/browser/index.js +646 -0
  13. package/dist/browser/kb-update-pipeline.feature.js +61 -0
  14. package/dist/browser/operations/index.js +199 -0
  15. package/dist/browser/operations/pipeline.js +199 -0
  16. package/dist/browser/presentations.js +120 -0
  17. package/dist/browser/tests/operations.test-spec.js +85 -0
  18. package/dist/docs/index.d.ts +2 -1
  19. package/dist/docs/index.d.ts.map +1 -0
  20. package/dist/docs/index.js +44 -1
  21. package/dist/docs/kb-update-pipeline.docblock.d.ts +2 -1
  22. package/dist/docs/kb-update-pipeline.docblock.d.ts.map +1 -0
  23. package/dist/docs/kb-update-pipeline.docblock.js +41 -28
  24. package/dist/entities/index.d.ts +2 -2
  25. package/dist/entities/index.d.ts.map +1 -0
  26. package/dist/entities/index.js +57 -3
  27. package/dist/entities/models.d.ts +53 -58
  28. package/dist/entities/models.d.ts.map +1 -1
  29. package/dist/entities/models.js +54 -71
  30. package/dist/events.d.ts +62 -68
  31. package/dist/events.d.ts.map +1 -1
  32. package/dist/events.js +122 -139
  33. package/dist/example.d.ts +2 -6
  34. package/dist/example.d.ts.map +1 -1
  35. package/dist/example.js +33 -47
  36. package/dist/handlers/index.d.ts +2 -2
  37. package/dist/handlers/index.d.ts.map +1 -0
  38. package/dist/handlers/index.js +110 -3
  39. package/dist/handlers/memory.handlers.d.ts +58 -60
  40. package/dist/handlers/memory.handlers.d.ts.map +1 -1
  41. package/dist/handlers/memory.handlers.js +104 -87
  42. package/dist/handlers/memory.handlers.test.d.ts +2 -0
  43. package/dist/handlers/memory.handlers.test.d.ts.map +1 -0
  44. package/dist/index.d.ts +14 -10
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +647 -12
  47. package/dist/kb-update-pipeline.feature.d.ts +1 -6
  48. package/dist/kb-update-pipeline.feature.d.ts.map +1 -1
  49. package/dist/kb-update-pipeline.feature.js +60 -140
  50. package/dist/node/docs/index.js +43 -0
  51. package/dist/node/docs/kb-update-pipeline.docblock.js +43 -0
  52. package/dist/node/entities/index.js +56 -0
  53. package/dist/node/entities/models.js +56 -0
  54. package/dist/node/events.js +132 -0
  55. package/dist/node/example.js +35 -0
  56. package/dist/node/handlers/index.js +109 -0
  57. package/dist/node/handlers/memory.handlers.js +109 -0
  58. package/dist/node/index.js +646 -0
  59. package/dist/node/kb-update-pipeline.feature.js +61 -0
  60. package/dist/node/operations/index.js +199 -0
  61. package/dist/node/operations/pipeline.js +199 -0
  62. package/dist/node/presentations.js +120 -0
  63. package/dist/node/tests/operations.test-spec.js +85 -0
  64. package/dist/operations/index.d.ts +2 -2
  65. package/dist/operations/index.d.ts.map +1 -0
  66. package/dist/operations/index.js +199 -2
  67. package/dist/operations/pipeline.d.ts +126 -132
  68. package/dist/operations/pipeline.d.ts.map +1 -1
  69. package/dist/operations/pipeline.js +189 -172
  70. package/dist/presentations.d.ts +3 -8
  71. package/dist/presentations.d.ts.map +1 -1
  72. package/dist/presentations.js +117 -67
  73. package/dist/tests/operations.test-spec.d.ts +3 -8
  74. package/dist/tests/operations.test-spec.d.ts.map +1 -1
  75. package/dist/tests/operations.test-spec.js +82 -90
  76. package/package.json +157 -41
  77. package/tsdown.config.js +1 -2
  78. package/.turbo/turbo-build$colon$bundle.log +0 -55
  79. package/dist/docs/kb-update-pipeline.docblock.js.map +0 -1
  80. package/dist/entities/models.js.map +0 -1
  81. package/dist/events.js.map +0 -1
  82. package/dist/example.js.map +0 -1
  83. package/dist/handlers/memory.handlers.js.map +0 -1
  84. package/dist/kb-update-pipeline.feature.js.map +0 -1
  85. package/dist/operations/pipeline.js.map +0 -1
  86. package/dist/presentations.js.map +0 -1
  87. package/dist/tests/operations.test-spec.js.map +0 -1
package/dist/events.js CHANGED
@@ -1,150 +1,133 @@
1
- import { StabilityEnum, defineEvent, defineSchemaModel } from "@contractspec/lib.contracts";
1
+ // @bun
2
+ // src/events.ts
3
+ import {
4
+ defineEvent,
5
+ defineSchemaModel,
6
+ StabilityEnum
7
+ } from "@contractspec/lib.contracts";
2
8
  import { ScalarTypeEnum } from "@contractspec/lib.schema";
3
-
4
- //#region src/events.ts
5
- const KbChangeDetectedPayload = defineSchemaModel({
6
- name: "KbChangeDetectedPayload",
7
- description: "Emitted when a source change is detected.",
8
- fields: {
9
- changeCandidateId: {
10
- type: ScalarTypeEnum.String_unsecure(),
11
- isOptional: false
12
- },
13
- sourceDocumentId: {
14
- type: ScalarTypeEnum.String_unsecure(),
15
- isOptional: false
16
- },
17
- riskLevel: {
18
- type: ScalarTypeEnum.String_unsecure(),
19
- isOptional: false
20
- }
21
- }
9
+ var KbChangeDetectedPayload = defineSchemaModel({
10
+ name: "KbChangeDetectedPayload",
11
+ description: "Emitted when a source change is detected.",
12
+ fields: {
13
+ changeCandidateId: {
14
+ type: ScalarTypeEnum.String_unsecure(),
15
+ isOptional: false
16
+ },
17
+ sourceDocumentId: {
18
+ type: ScalarTypeEnum.String_unsecure(),
19
+ isOptional: false
20
+ },
21
+ riskLevel: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
22
+ }
22
23
  });
23
- const KbChangeDetectedEvent = defineEvent({
24
- meta: {
25
- key: "kb.change.detected",
26
- version: "1.0.0",
27
- description: "KB source change detected.",
28
- stability: StabilityEnum.Experimental,
29
- owners: [],
30
- tags: []
31
- },
32
- payload: KbChangeDetectedPayload
24
+ var KbChangeDetectedEvent = defineEvent({
25
+ meta: {
26
+ key: "kb.change.detected",
27
+ version: "1.0.0",
28
+ description: "KB source change detected.",
29
+ stability: StabilityEnum.Experimental,
30
+ owners: [],
31
+ tags: []
32
+ },
33
+ payload: KbChangeDetectedPayload
33
34
  });
34
- const KbChangeSummarizedPayload = defineSchemaModel({
35
- name: "KbChangeSummarizedPayload",
36
- description: "Emitted when a change summary is produced.",
37
- fields: {
38
- changeCandidateId: {
39
- type: ScalarTypeEnum.String_unsecure(),
40
- isOptional: false
41
- },
42
- summary: {
43
- type: ScalarTypeEnum.String_unsecure(),
44
- isOptional: false
45
- },
46
- riskLevel: {
47
- type: ScalarTypeEnum.String_unsecure(),
48
- isOptional: false
49
- }
50
- }
35
+ var KbChangeSummarizedPayload = defineSchemaModel({
36
+ name: "KbChangeSummarizedPayload",
37
+ description: "Emitted when a change summary is produced.",
38
+ fields: {
39
+ changeCandidateId: {
40
+ type: ScalarTypeEnum.String_unsecure(),
41
+ isOptional: false
42
+ },
43
+ summary: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
44
+ riskLevel: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
45
+ }
51
46
  });
52
- const KbChangeSummarizedEvent = defineEvent({
53
- meta: {
54
- key: "kb.change.summarized",
55
- version: "1.0.0",
56
- description: "KB change summarized.",
57
- stability: StabilityEnum.Experimental,
58
- owners: [],
59
- tags: []
60
- },
61
- payload: KbChangeSummarizedPayload
47
+ var KbChangeSummarizedEvent = defineEvent({
48
+ meta: {
49
+ key: "kb.change.summarized",
50
+ version: "1.0.0",
51
+ description: "KB change summarized.",
52
+ stability: StabilityEnum.Experimental,
53
+ owners: [],
54
+ tags: []
55
+ },
56
+ payload: KbChangeSummarizedPayload
62
57
  });
63
- const KbPatchProposedPayload = defineSchemaModel({
64
- name: "KbPatchProposedPayload",
65
- description: "Emitted when draft rule patches are proposed.",
66
- fields: {
67
- changeCandidateId: {
68
- type: ScalarTypeEnum.String_unsecure(),
69
- isOptional: false
70
- },
71
- proposedRuleVersionIds: {
72
- type: ScalarTypeEnum.String_unsecure(),
73
- isArray: true,
74
- isOptional: false
75
- }
76
- }
58
+ var KbPatchProposedPayload = defineSchemaModel({
59
+ name: "KbPatchProposedPayload",
60
+ description: "Emitted when draft rule patches are proposed.",
61
+ fields: {
62
+ changeCandidateId: {
63
+ type: ScalarTypeEnum.String_unsecure(),
64
+ isOptional: false
65
+ },
66
+ proposedRuleVersionIds: {
67
+ type: ScalarTypeEnum.String_unsecure(),
68
+ isArray: true,
69
+ isOptional: false
70
+ }
71
+ }
77
72
  });
78
- const KbPatchProposedEvent = defineEvent({
79
- meta: {
80
- key: "kb.patch.proposed",
81
- version: "1.0.0",
82
- description: "KB rule patch proposed (draft versions created).",
83
- stability: StabilityEnum.Experimental,
84
- owners: [],
85
- tags: []
86
- },
87
- payload: KbPatchProposedPayload
73
+ var KbPatchProposedEvent = defineEvent({
74
+ meta: {
75
+ key: "kb.patch.proposed",
76
+ version: "1.0.0",
77
+ description: "KB rule patch proposed (draft versions created).",
78
+ stability: StabilityEnum.Experimental,
79
+ owners: [],
80
+ tags: []
81
+ },
82
+ payload: KbPatchProposedPayload
88
83
  });
89
- const KbReviewRequestedPayload = defineSchemaModel({
90
- name: "KbReviewRequestedPayload",
91
- description: "Emitted when a review is requested.",
92
- fields: {
93
- reviewTaskId: {
94
- type: ScalarTypeEnum.String_unsecure(),
95
- isOptional: false
96
- },
97
- changeCandidateId: {
98
- type: ScalarTypeEnum.String_unsecure(),
99
- isOptional: false
100
- },
101
- assignedRole: {
102
- type: ScalarTypeEnum.String_unsecure(),
103
- isOptional: false
104
- }
105
- }
84
+ var KbReviewRequestedPayload = defineSchemaModel({
85
+ name: "KbReviewRequestedPayload",
86
+ description: "Emitted when a review is requested.",
87
+ fields: {
88
+ reviewTaskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
89
+ changeCandidateId: {
90
+ type: ScalarTypeEnum.String_unsecure(),
91
+ isOptional: false
92
+ },
93
+ assignedRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
94
+ }
106
95
  });
107
- const KbReviewRequestedEvent = defineEvent({
108
- meta: {
109
- key: "kb.review.requested",
110
- version: "1.0.0",
111
- description: "KB review requested.",
112
- stability: StabilityEnum.Experimental,
113
- owners: [],
114
- tags: []
115
- },
116
- payload: KbReviewRequestedPayload
96
+ var KbReviewRequestedEvent = defineEvent({
97
+ meta: {
98
+ key: "kb.review.requested",
99
+ version: "1.0.0",
100
+ description: "KB review requested.",
101
+ stability: StabilityEnum.Experimental,
102
+ owners: [],
103
+ tags: []
104
+ },
105
+ payload: KbReviewRequestedPayload
117
106
  });
118
- const KbReviewDecidedPayload = defineSchemaModel({
119
- name: "KbReviewDecidedPayload",
120
- description: "Emitted when a review task is decided.",
121
- fields: {
122
- reviewTaskId: {
123
- type: ScalarTypeEnum.String_unsecure(),
124
- isOptional: false
125
- },
126
- decision: {
127
- type: ScalarTypeEnum.String_unsecure(),
128
- isOptional: false
129
- },
130
- decidedBy: {
131
- type: ScalarTypeEnum.String_unsecure(),
132
- isOptional: false
133
- }
134
- }
107
+ var KbReviewDecidedPayload = defineSchemaModel({
108
+ name: "KbReviewDecidedPayload",
109
+ description: "Emitted when a review task is decided.",
110
+ fields: {
111
+ reviewTaskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
112
+ decision: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
113
+ decidedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
114
+ }
135
115
  });
136
- const KbReviewDecidedEvent = defineEvent({
137
- meta: {
138
- key: "kb.review.decided",
139
- version: "1.0.0",
140
- description: "KB review decided.",
141
- stability: StabilityEnum.Experimental,
142
- owners: [],
143
- tags: []
144
- },
145
- payload: KbReviewDecidedPayload
116
+ var KbReviewDecidedEvent = defineEvent({
117
+ meta: {
118
+ key: "kb.review.decided",
119
+ version: "1.0.0",
120
+ description: "KB review decided.",
121
+ stability: StabilityEnum.Experimental,
122
+ owners: [],
123
+ tags: []
124
+ },
125
+ payload: KbReviewDecidedPayload
146
126
  });
147
-
148
- //#endregion
149
- export { KbChangeDetectedEvent, KbChangeSummarizedEvent, KbPatchProposedEvent, KbReviewDecidedEvent, KbReviewRequestedEvent };
150
- //# sourceMappingURL=events.js.map
127
+ export {
128
+ KbReviewRequestedEvent,
129
+ KbReviewDecidedEvent,
130
+ KbPatchProposedEvent,
131
+ KbChangeSummarizedEvent,
132
+ KbChangeDetectedEvent
133
+ };
package/dist/example.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- import * as _contractspec_lib_contracts15 from "@contractspec/lib.contracts";
2
-
3
- //#region src/example.d.ts
4
- declare const example: _contractspec_lib_contracts15.ExampleSpec;
5
- //#endregion
6
- export { example as default };
1
+ declare const example: import("@contractspec/lib.contracts").ExampleSpec;
2
+ export default example;
7
3
  //# sourceMappingURL=example.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";;;cAEM,SA6BJ,6BAAA,CA7BW"}
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,OAAO,mDA6BX,CAAC;AAEH,eAAe,OAAO,CAAC"}
package/dist/example.js CHANGED
@@ -1,50 +1,36 @@
1
+ // @bun
2
+ // src/example.ts
1
3
  import { defineExample } from "@contractspec/lib.contracts";
2
-
3
- //#region src/example.ts
4
- const example = defineExample({
5
- meta: {
6
- key: "kb-update-pipeline",
7
- version: "1.0.0",
8
- title: "KB Update Pipeline",
9
- description: "Automation proposes KB updates; humans verify; everything audited and notified.",
10
- kind: "knowledge",
11
- visibility: "public",
12
- stability: "experimental",
13
- owners: ["@platform.core"],
14
- tags: [
15
- "knowledge",
16
- "pipeline",
17
- "hitl",
18
- "audit"
19
- ]
20
- },
21
- docs: { rootDocId: "docs.examples.kb-update-pipeline" },
22
- entrypoints: {
23
- packageName: "@contractspec/example.kb-update-pipeline",
24
- feature: "./feature",
25
- contracts: "./contracts",
26
- handlers: "./handlers",
27
- docs: "./docs"
28
- },
29
- surfaces: {
30
- templates: true,
31
- sandbox: {
32
- enabled: true,
33
- modes: [
34
- "markdown",
35
- "specs",
36
- "builder"
37
- ]
38
- },
39
- studio: {
40
- enabled: true,
41
- installable: true
42
- },
43
- mcp: { enabled: true }
44
- }
4
+ var example = defineExample({
5
+ meta: {
6
+ key: "kb-update-pipeline",
7
+ version: "1.0.0",
8
+ title: "KB Update Pipeline",
9
+ description: "Automation proposes KB updates; humans verify; everything audited and notified.",
10
+ kind: "knowledge",
11
+ visibility: "public",
12
+ stability: "experimental",
13
+ owners: ["@platform.core"],
14
+ tags: ["knowledge", "pipeline", "hitl", "audit"]
15
+ },
16
+ docs: {
17
+ rootDocId: "docs.examples.kb-update-pipeline"
18
+ },
19
+ entrypoints: {
20
+ packageName: "@contractspec/example.kb-update-pipeline",
21
+ feature: "./feature",
22
+ contracts: "./contracts",
23
+ handlers: "./handlers",
24
+ docs: "./docs"
25
+ },
26
+ surfaces: {
27
+ templates: true,
28
+ sandbox: { enabled: true, modes: ["markdown", "specs", "builder"] },
29
+ studio: { enabled: true, installable: true },
30
+ mcp: { enabled: true }
31
+ }
45
32
  });
46
33
  var example_default = example;
47
-
48
- //#endregion
49
- export { example_default as default };
50
- //# sourceMappingURL=example.js.map
34
+ export {
35
+ example_default as default
36
+ };
@@ -1,2 +1,2 @@
1
- import { PipelineMemoryHandlers, PipelineMemoryStore, createPipelineMemoryHandlers, createPipelineMemoryStore } from "./memory.handlers.js";
2
- export { PipelineMemoryHandlers, PipelineMemoryStore, createPipelineMemoryHandlers, createPipelineMemoryStore };
1
+ export * from './memory.handlers';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -1,3 +1,110 @@
1
- import { createPipelineMemoryHandlers, createPipelineMemoryStore } from "./memory.handlers.js";
2
-
3
- export { createPipelineMemoryHandlers, createPipelineMemoryStore };
1
+ // @bun
2
+ // src/handlers/memory.handlers.ts
3
+ function createPipelineMemoryStore() {
4
+ return {
5
+ candidates: new Map,
6
+ reviewTasks: new Map,
7
+ proposedRuleVersionIdsByCandidate: new Map,
8
+ approvedRuleVersionIds: new Set,
9
+ notifications: []
10
+ };
11
+ }
12
+ function stableId(prefix, value) {
13
+ return `${prefix}_${value.replace(/[^a-zA-Z0-9_-]/g, "_")}`;
14
+ }
15
+ function createPipelineMemoryHandlers(store) {
16
+ async function runWatch(input) {
17
+ const candidates = [...store.candidates.values()].filter((c) => c.sourceDocumentId.startsWith(`${input.jurisdiction}_`) || true);
18
+ return { candidates };
19
+ }
20
+ async function createReviewTask(input) {
21
+ const candidate = store.candidates.get(input.changeCandidateId);
22
+ if (!candidate)
23
+ throw new Error("CHANGE_CANDIDATE_NOT_FOUND");
24
+ const assignedRole = candidate.riskLevel === "high" ? "expert" : "curator";
25
+ const id = stableId("review", input.changeCandidateId);
26
+ const task = {
27
+ id,
28
+ changeCandidateId: input.changeCandidateId,
29
+ status: "open",
30
+ assignedRole,
31
+ decision: undefined,
32
+ decidedAt: undefined,
33
+ decidedBy: undefined
34
+ };
35
+ store.reviewTasks.set(id, task);
36
+ store.notifications.push({
37
+ kind: "kb.review.requested",
38
+ reviewTaskId: id,
39
+ changeCandidateId: input.changeCandidateId,
40
+ assignedRole,
41
+ createdAt: new Date
42
+ });
43
+ return task;
44
+ }
45
+ async function proposeRulePatch(input) {
46
+ if (!store.candidates.has(input.changeCandidateId)) {
47
+ throw new Error("CHANGE_CANDIDATE_NOT_FOUND");
48
+ }
49
+ store.proposedRuleVersionIdsByCandidate.set(input.changeCandidateId, [
50
+ ...input.proposedRuleVersionIds
51
+ ]);
52
+ return { proposedRuleVersionIds: [...input.proposedRuleVersionIds] };
53
+ }
54
+ async function markRuleVersionApproved(input) {
55
+ store.approvedRuleVersionIds.add(input.ruleVersionId);
56
+ return { ruleVersionId: input.ruleVersionId };
57
+ }
58
+ async function submitDecision(input) {
59
+ const task = store.reviewTasks.get(input.reviewTaskId);
60
+ if (!task)
61
+ throw new Error("REVIEW_TASK_NOT_FOUND");
62
+ const candidate = store.candidates.get(task.changeCandidateId);
63
+ if (!candidate)
64
+ throw new Error("CHANGE_CANDIDATE_NOT_FOUND");
65
+ if (candidate.riskLevel === "high" && input.decision === "approve") {
66
+ if (input.decidedByRole !== "expert")
67
+ throw new Error("FORBIDDEN_ROLE");
68
+ }
69
+ const decided = {
70
+ ...task,
71
+ status: "decided",
72
+ decision: input.decision,
73
+ decidedAt: new Date,
74
+ decidedBy: input.decidedBy
75
+ };
76
+ store.reviewTasks.set(decided.id, decided);
77
+ return decided;
78
+ }
79
+ async function publishIfReady(_input) {
80
+ const openTasks = [...store.reviewTasks.values()].filter((t) => t.status !== "decided");
81
+ if (openTasks.length) {
82
+ throw new Error("NOT_READY");
83
+ }
84
+ const rejected = [...store.reviewTasks.values()].some((t) => t.decision === "reject");
85
+ if (rejected)
86
+ return { published: false, reason: "REJECTED" };
87
+ for (const task of store.reviewTasks.values()) {
88
+ if (task.decision !== "approve")
89
+ continue;
90
+ const proposed = store.proposedRuleVersionIdsByCandidate.get(task.changeCandidateId) ?? [];
91
+ const unapproved = proposed.filter((id) => !store.approvedRuleVersionIds.has(id));
92
+ if (unapproved.length) {
93
+ throw new Error("NOT_READY");
94
+ }
95
+ }
96
+ return { published: true };
97
+ }
98
+ return {
99
+ runWatch,
100
+ createReviewTask,
101
+ proposeRulePatch,
102
+ markRuleVersionApproved,
103
+ submitDecision,
104
+ publishIfReady
105
+ };
106
+ }
107
+ export {
108
+ createPipelineMemoryStore,
109
+ createPipelineMemoryHandlers
110
+ };
@@ -1,68 +1,66 @@
1
- //#region src/handlers/memory.handlers.d.ts
2
1
  interface ChangeCandidate {
3
- id: string;
4
- sourceDocumentId: string;
5
- detectedAt: Date;
6
- diffSummary: string;
7
- riskLevel: 'low' | 'medium' | 'high';
2
+ id: string;
3
+ sourceDocumentId: string;
4
+ detectedAt: Date;
5
+ diffSummary: string;
6
+ riskLevel: 'low' | 'medium' | 'high';
8
7
  }
9
8
  interface ReviewTask {
10
- id: string;
11
- changeCandidateId: string;
12
- status: 'open' | 'decided';
13
- assignedRole: 'curator' | 'expert';
14
- decision?: 'approve' | 'reject';
15
- decidedAt?: Date;
16
- decidedBy?: string;
17
- }
18
- interface PipelineMemoryStore {
19
- candidates: Map<string, ChangeCandidate>;
20
- reviewTasks: Map<string, ReviewTask>;
21
- proposedRuleVersionIdsByCandidate: Map<string, string[]>;
22
- approvedRuleVersionIds: Set<string>;
23
- notifications: {
24
- kind: 'kb.review.requested';
25
- reviewTaskId: string;
9
+ id: string;
26
10
  changeCandidateId: string;
11
+ status: 'open' | 'decided';
27
12
  assignedRole: 'curator' | 'expert';
28
- createdAt: Date;
29
- }[];
13
+ decision?: 'approve' | 'reject';
14
+ decidedAt?: Date;
15
+ decidedBy?: string;
30
16
  }
31
- declare function createPipelineMemoryStore(): PipelineMemoryStore;
32
- interface PipelineMemoryHandlers {
33
- runWatch(input: {
34
- jurisdiction: string;
35
- }): Promise<{
36
- candidates: ChangeCandidate[];
37
- }>;
38
- createReviewTask(input: {
39
- changeCandidateId: string;
40
- }): Promise<ReviewTask>;
41
- proposeRulePatch(input: {
42
- changeCandidateId: string;
43
- proposedRuleVersionIds: string[];
44
- }): Promise<{
45
- proposedRuleVersionIds: string[];
46
- }>;
47
- markRuleVersionApproved(input: {
48
- ruleVersionId: string;
49
- }): Promise<{
50
- ruleVersionId: string;
51
- }>;
52
- submitDecision(input: {
53
- reviewTaskId: string;
54
- decision: 'approve' | 'reject';
55
- decidedBy: string;
56
- decidedByRole: 'curator' | 'expert';
57
- }): Promise<ReviewTask>;
58
- publishIfReady(input: {
59
- jurisdiction: string;
60
- }): Promise<{
61
- published: boolean;
62
- reason?: string;
63
- }>;
17
+ export interface PipelineMemoryStore {
18
+ candidates: Map<string, ChangeCandidate>;
19
+ reviewTasks: Map<string, ReviewTask>;
20
+ proposedRuleVersionIdsByCandidate: Map<string, string[]>;
21
+ approvedRuleVersionIds: Set<string>;
22
+ notifications: {
23
+ kind: 'kb.review.requested';
24
+ reviewTaskId: string;
25
+ changeCandidateId: string;
26
+ assignedRole: 'curator' | 'expert';
27
+ createdAt: Date;
28
+ }[];
29
+ }
30
+ export declare function createPipelineMemoryStore(): PipelineMemoryStore;
31
+ export interface PipelineMemoryHandlers {
32
+ runWatch(input: {
33
+ jurisdiction: string;
34
+ }): Promise<{
35
+ candidates: ChangeCandidate[];
36
+ }>;
37
+ createReviewTask(input: {
38
+ changeCandidateId: string;
39
+ }): Promise<ReviewTask>;
40
+ proposeRulePatch(input: {
41
+ changeCandidateId: string;
42
+ proposedRuleVersionIds: string[];
43
+ }): Promise<{
44
+ proposedRuleVersionIds: string[];
45
+ }>;
46
+ markRuleVersionApproved(input: {
47
+ ruleVersionId: string;
48
+ }): Promise<{
49
+ ruleVersionId: string;
50
+ }>;
51
+ submitDecision(input: {
52
+ reviewTaskId: string;
53
+ decision: 'approve' | 'reject';
54
+ decidedBy: string;
55
+ decidedByRole: 'curator' | 'expert';
56
+ }): Promise<ReviewTask>;
57
+ publishIfReady(input: {
58
+ jurisdiction: string;
59
+ }): Promise<{
60
+ published: boolean;
61
+ reason?: string;
62
+ }>;
64
63
  }
65
- declare function createPipelineMemoryHandlers(store: PipelineMemoryStore): PipelineMemoryHandlers;
66
- //#endregion
67
- export { PipelineMemoryHandlers, PipelineMemoryStore, createPipelineMemoryHandlers, createPipelineMemoryStore };
64
+ export declare function createPipelineMemoryHandlers(store: PipelineMemoryStore): PipelineMemoryHandlers;
65
+ export {};
68
66
  //# sourceMappingURL=memory.handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.handlers.d.ts","names":[],"sources":["../../src/handlers/memory.handlers.ts"],"sourcesContent":[],"mappings":";UAAU,eAAA;EAAA,EAAA,EAAA,MAAA;EAQA,gBAAU,EAAA,MAAA;EAUH,UAAA,EAfH,IAeG;EACS,WAAA,EAAA,MAAA;EAAZ,SAAA,EAAA,KAAA,GAAA,QAAA,GAAA,MAAA;;UAXJ,UAAA,CAYK;EACsB,EAAA,EAAA,MAAA;EACX,iBAAA,EAAA,MAAA;EAMX,MAAA,EAAA,MAAA,GAAA,SAAA;EAAI,YAAA,EAAA,SAAA,GAAA,QAAA;EAIH,QAAA,CAAA,EAAA,SAAA,GAAA,QAAyB;EAcxB,SAAA,CAAA,EAhCH,IAgCG;EAGW,SAAA,CAAA,EAAA,MAAA;;AACsC,UAhCjD,mBAAA,CAgCiD;EAAR,UAAA,EA/B5C,GA+B4C,CAAA,MAAA,EA/BhC,eA+BgC,CAAA;EAIpD,WAAA,EAlCS,GAkCT,CAAA,MAAA,EAlCqB,UAkCrB,CAAA;EAGA,iCAAA,EApC+B,GAoC/B,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA;EAMQ,sBAAA,EAzCY,GAyCZ,CAAA,MAAA,CAAA;EAAR,aAAA,EAAA;IAGA,IAAA,EAAA,qBAAA;IAAO,YAAA,EAAA,MAAA;IAGG,iBAAA,EAAA,MAAA;;eAzCD;;;iBAIC,yBAAA,CAAA,GAA6B;UAc5B,sBAAA;;;MAGX;gBAAsB;;;;MAC8B,QAAQ;;;;MAI5D;;;;;MAGA;;;;;;;;MAMA,QAAQ;;;MAGR;;;;;iBAGU,4BAAA,QACP,sBACN"}
1
+ {"version":3,"file":"memory.handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/memory.handlers.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,IAAI,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,iCAAiC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE;QACb,IAAI,EAAE,qBAAqB,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC;QACnC,SAAS,EAAE,IAAI,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAgB,yBAAyB,IAAI,mBAAmB,CAQ/D;AAMD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/C,gBAAgB,CAAC,KAAK,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5E,gBAAgB,CAAC,KAAK,EAAE;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAC;KAClC,GAAG,OAAO,CAAC;QAAE,sBAAsB,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAClD,uBAAuB,CAAC,KAAK,EAAE;QAC7B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,cAAc,CAAC,KAAK,EAAE;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,SAAS,GAAG,QAAQ,CAAC;KACrC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxB,cAAc,CAAC,KAAK,EAAE;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,mBAAmB,GACzB,sBAAsB,CAkHxB"}