@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
@@ -1,94 +1,86 @@
1
+ // @bun
2
+ // src/tests/operations.test-spec.ts
1
3
  import { defineTestSpec } from "@contractspec/lib.contracts";
2
-
3
- //#region src/tests/operations.test-spec.ts
4
- const RunWatchTest = defineTestSpec({
5
- meta: {
6
- key: "kbPipeline.runWatch.test",
7
- version: "1.0.0",
8
- stability: "experimental",
9
- owners: ["@example.kb-update-pipeline"],
10
- description: "Test for run watch operation",
11
- tags: ["test"]
12
- },
13
- target: {
14
- type: "operation",
15
- operation: {
16
- key: "kbPipeline.runWatch",
17
- version: "1.0.0"
18
- }
19
- },
20
- scenarios: [{
21
- key: "success",
22
- when: { operation: { key: "kbPipeline.runWatch" } },
23
- then: [{
24
- type: "expectOutput",
25
- match: {}
26
- }]
27
- }, {
28
- key: "error",
29
- when: { operation: { key: "kbPipeline.runWatch" } },
30
- then: [{ type: "expectError" }]
31
- }]
4
+ var RunWatchTest = defineTestSpec({
5
+ meta: {
6
+ key: "kbPipeline.runWatch.test",
7
+ version: "1.0.0",
8
+ stability: "experimental",
9
+ owners: ["@example.kb-update-pipeline"],
10
+ description: "Test for run watch operation",
11
+ tags: ["test"]
12
+ },
13
+ target: {
14
+ type: "operation",
15
+ operation: { key: "kbPipeline.runWatch", version: "1.0.0" }
16
+ },
17
+ scenarios: [
18
+ {
19
+ key: "success",
20
+ when: { operation: { key: "kbPipeline.runWatch" } },
21
+ then: [{ type: "expectOutput", match: {} }]
22
+ },
23
+ {
24
+ key: "error",
25
+ when: { operation: { key: "kbPipeline.runWatch" } },
26
+ then: [{ type: "expectError" }]
27
+ }
28
+ ]
32
29
  });
33
- const CreateReviewTaskTest = defineTestSpec({
34
- meta: {
35
- key: "kbPipeline.createReviewTask.test",
36
- version: "1.0.0",
37
- stability: "experimental",
38
- owners: ["@example.kb-update-pipeline"],
39
- description: "Test for creating review task",
40
- tags: ["test"]
41
- },
42
- target: {
43
- type: "operation",
44
- operation: {
45
- key: "kbPipeline.createReviewTask",
46
- version: "1.0.0"
47
- }
48
- },
49
- scenarios: [{
50
- key: "success",
51
- when: { operation: { key: "kbPipeline.createReviewTask" } },
52
- then: [{
53
- type: "expectOutput",
54
- match: {}
55
- }]
56
- }, {
57
- key: "error",
58
- when: { operation: { key: "kbPipeline.createReviewTask" } },
59
- then: [{ type: "expectError" }]
60
- }]
30
+ var CreateReviewTaskTest = defineTestSpec({
31
+ meta: {
32
+ key: "kbPipeline.createReviewTask.test",
33
+ version: "1.0.0",
34
+ stability: "experimental",
35
+ owners: ["@example.kb-update-pipeline"],
36
+ description: "Test for creating review task",
37
+ tags: ["test"]
38
+ },
39
+ target: {
40
+ type: "operation",
41
+ operation: { key: "kbPipeline.createReviewTask", version: "1.0.0" }
42
+ },
43
+ scenarios: [
44
+ {
45
+ key: "success",
46
+ when: { operation: { key: "kbPipeline.createReviewTask" } },
47
+ then: [{ type: "expectOutput", match: {} }]
48
+ },
49
+ {
50
+ key: "error",
51
+ when: { operation: { key: "kbPipeline.createReviewTask" } },
52
+ then: [{ type: "expectError" }]
53
+ }
54
+ ]
61
55
  });
62
- const SubmitDecisionTest = defineTestSpec({
63
- meta: {
64
- key: "kbPipeline.submitDecision.test",
65
- version: "1.0.0",
66
- stability: "experimental",
67
- owners: ["@example.kb-update-pipeline"],
68
- description: "Test for submitting decision",
69
- tags: ["test"]
70
- },
71
- target: {
72
- type: "operation",
73
- operation: {
74
- key: "kbPipeline.submitDecision",
75
- version: "1.0.0"
76
- }
77
- },
78
- scenarios: [{
79
- key: "success",
80
- when: { operation: { key: "kbPipeline.submitDecision" } },
81
- then: [{
82
- type: "expectOutput",
83
- match: {}
84
- }]
85
- }, {
86
- key: "error",
87
- when: { operation: { key: "kbPipeline.submitDecision" } },
88
- then: [{ type: "expectError" }]
89
- }]
56
+ var SubmitDecisionTest = defineTestSpec({
57
+ meta: {
58
+ key: "kbPipeline.submitDecision.test",
59
+ version: "1.0.0",
60
+ stability: "experimental",
61
+ owners: ["@example.kb-update-pipeline"],
62
+ description: "Test for submitting decision",
63
+ tags: ["test"]
64
+ },
65
+ target: {
66
+ type: "operation",
67
+ operation: { key: "kbPipeline.submitDecision", version: "1.0.0" }
68
+ },
69
+ scenarios: [
70
+ {
71
+ key: "success",
72
+ when: { operation: { key: "kbPipeline.submitDecision" } },
73
+ then: [{ type: "expectOutput", match: {} }]
74
+ },
75
+ {
76
+ key: "error",
77
+ when: { operation: { key: "kbPipeline.submitDecision" } },
78
+ then: [{ type: "expectError" }]
79
+ }
80
+ ]
90
81
  });
91
-
92
- //#endregion
93
- export { CreateReviewTaskTest, RunWatchTest, SubmitDecisionTest };
94
- //# sourceMappingURL=operations.test-spec.js.map
82
+ export {
83
+ SubmitDecisionTest,
84
+ RunWatchTest,
85
+ CreateReviewTaskTest
86
+ };
package/package.json CHANGED
@@ -1,66 +1,182 @@
1
1
  {
2
2
  "name": "@contractspec/example.kb-update-pipeline",
3
- "version": "1.56.1",
3
+ "version": "1.58.0",
4
4
  "description": "Example: KB update automation pipeline with HITL review and auditability.",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
8
- ".": "./dist/index.js",
9
- "./docs": "./dist/docs/index.js",
10
- "./docs/kb-update-pipeline.docblock": "./dist/docs/kb-update-pipeline.docblock.js",
11
- "./entities": "./dist/entities/index.js",
12
- "./entities/models": "./dist/entities/models.js",
13
- "./events": "./dist/events.js",
14
- "./example": "./dist/example.js",
15
- "./handlers": "./dist/handlers/index.js",
16
- "./handlers/memory.handlers": "./dist/handlers/memory.handlers.js",
17
- "./kb-update-pipeline.feature": "./dist/kb-update-pipeline.feature.js",
18
- "./operations": "./dist/operations/index.js",
19
- "./operations/pipeline": "./dist/operations/pipeline.js",
20
- "./presentations": "./dist/presentations.js",
21
- "./tests/operations.test-spec": "./dist/tests/operations.test-spec.js",
22
- "./*": "./*"
8
+ ".": "./src/index.ts",
9
+ "./docs": "./src/docs/index.ts",
10
+ "./docs/index": "./src/docs/index.ts",
11
+ "./docs/kb-update-pipeline.docblock": "./src/docs/kb-update-pipeline.docblock.ts",
12
+ "./entities": "./src/entities/index.ts",
13
+ "./entities/index": "./src/entities/index.ts",
14
+ "./entities/models": "./src/entities/models.ts",
15
+ "./events": "./src/events.ts",
16
+ "./example": "./src/example.ts",
17
+ "./handlers": "./src/handlers/index.ts",
18
+ "./handlers/index": "./src/handlers/index.ts",
19
+ "./handlers/memory.handlers": "./src/handlers/memory.handlers.ts",
20
+ "./kb-update-pipeline.feature": "./src/kb-update-pipeline.feature.ts",
21
+ "./operations": "./src/operations/index.ts",
22
+ "./operations/index": "./src/operations/index.ts",
23
+ "./operations/pipeline": "./src/operations/pipeline.ts",
24
+ "./presentations": "./src/presentations.ts",
25
+ "./tests/operations.test-spec": "./src/tests/operations.test-spec.ts"
23
26
  },
24
27
  "scripts": {
25
28
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
26
29
  "publish:pkg:canary": "bun publish:pkg --tag canary",
27
- "build": "bun build:types && bun build:bundle",
28
- "build:bundle": "tsdown",
29
- "build:types": "tsc --noEmit",
30
- "dev": "bun build:bundle --watch",
30
+ "build": "bun run prebuild && bun run build:bundle && bun run build:types",
31
+ "build:bundle": "contractspec-bun-build transpile",
32
+ "build:types": "contractspec-bun-build types",
33
+ "dev": "contractspec-bun-build dev",
31
34
  "clean": "rimraf dist .turbo",
32
35
  "lint": "bun lint:fix",
33
36
  "lint:fix": "eslint src --fix",
34
37
  "lint:check": "eslint src",
35
- "test": "bun test"
38
+ "test": "bun test",
39
+ "prebuild": "contractspec-bun-build prebuild",
40
+ "typecheck": "tsc --noEmit"
36
41
  },
37
42
  "dependencies": {
38
- "@contractspec/lib.contracts": "1.56.1",
39
- "@contractspec/lib.schema": "1.56.1"
43
+ "@contractspec/lib.contracts": "1.58.0",
44
+ "@contractspec/lib.schema": "1.58.0"
40
45
  },
41
46
  "devDependencies": {
42
- "@contractspec/tool.tsdown": "1.56.1",
43
- "@contractspec/tool.typescript": "1.56.1",
44
- "tsdown": "^0.19.0",
45
- "typescript": "^5.9.3"
47
+ "@contractspec/tool.typescript": "1.58.0",
48
+ "typescript": "^5.9.3",
49
+ "@contractspec/tool.bun": "1.57.0"
46
50
  },
47
51
  "publishConfig": {
48
52
  "access": "public",
49
53
  "exports": {
50
- ".": "./dist/index.js",
51
- "./contracts": "./dist/contracts/index.js",
52
- "./contracts/pipeline": "./dist/contracts/pipeline.js",
53
- "./docs": "./dist/docs/index.js",
54
- "./docs/kb-update-pipeline.docblock": "./dist/docs/kb-update-pipeline.docblock.js",
55
- "./entities": "./dist/entities/index.js",
56
- "./entities/models": "./dist/entities/models.js",
57
- "./events": "./dist/events.js",
58
- "./example": "./dist/example.js",
59
- "./feature": "./dist/feature.js",
60
- "./handlers": "./dist/handlers/index.js",
61
- "./handlers/memory.handlers": "./dist/handlers/memory.handlers.js",
62
- "./kb-update-pipeline.feature": "./dist/kb-update-pipeline.feature.js",
63
- "./*": "./*"
54
+ ".": {
55
+ "types": "./dist/index.d.ts",
56
+ "bun": "./dist/index.js",
57
+ "node": "./dist/node/index.mjs",
58
+ "browser": "./dist/browser/index.js",
59
+ "default": "./dist/index.js"
60
+ },
61
+ "./docs": {
62
+ "types": "./dist/docs/index.d.ts",
63
+ "bun": "./dist/docs/index.js",
64
+ "node": "./dist/node/docs/index.mjs",
65
+ "browser": "./dist/browser/docs/index.js",
66
+ "default": "./dist/docs/index.js"
67
+ },
68
+ "./docs/index": {
69
+ "types": "./dist/docs/index.d.ts",
70
+ "bun": "./dist/docs/index.js",
71
+ "node": "./dist/node/docs/index.mjs",
72
+ "browser": "./dist/browser/docs/index.js",
73
+ "default": "./dist/docs/index.js"
74
+ },
75
+ "./docs/kb-update-pipeline.docblock": {
76
+ "types": "./dist/docs/kb-update-pipeline.docblock.d.ts",
77
+ "bun": "./dist/docs/kb-update-pipeline.docblock.js",
78
+ "node": "./dist/node/docs/kb-update-pipeline.docblock.mjs",
79
+ "browser": "./dist/browser/docs/kb-update-pipeline.docblock.js",
80
+ "default": "./dist/docs/kb-update-pipeline.docblock.js"
81
+ },
82
+ "./entities": {
83
+ "types": "./dist/entities/index.d.ts",
84
+ "bun": "./dist/entities/index.js",
85
+ "node": "./dist/node/entities/index.mjs",
86
+ "browser": "./dist/browser/entities/index.js",
87
+ "default": "./dist/entities/index.js"
88
+ },
89
+ "./entities/index": {
90
+ "types": "./dist/entities/index.d.ts",
91
+ "bun": "./dist/entities/index.js",
92
+ "node": "./dist/node/entities/index.mjs",
93
+ "browser": "./dist/browser/entities/index.js",
94
+ "default": "./dist/entities/index.js"
95
+ },
96
+ "./entities/models": {
97
+ "types": "./dist/entities/models.d.ts",
98
+ "bun": "./dist/entities/models.js",
99
+ "node": "./dist/node/entities/models.mjs",
100
+ "browser": "./dist/browser/entities/models.js",
101
+ "default": "./dist/entities/models.js"
102
+ },
103
+ "./events": {
104
+ "types": "./dist/events.d.ts",
105
+ "bun": "./dist/events.js",
106
+ "node": "./dist/node/events.mjs",
107
+ "browser": "./dist/browser/events.js",
108
+ "default": "./dist/events.js"
109
+ },
110
+ "./example": {
111
+ "types": "./dist/example.d.ts",
112
+ "bun": "./dist/example.js",
113
+ "node": "./dist/node/example.mjs",
114
+ "browser": "./dist/browser/example.js",
115
+ "default": "./dist/example.js"
116
+ },
117
+ "./handlers": {
118
+ "types": "./dist/handlers/index.d.ts",
119
+ "bun": "./dist/handlers/index.js",
120
+ "node": "./dist/node/handlers/index.mjs",
121
+ "browser": "./dist/browser/handlers/index.js",
122
+ "default": "./dist/handlers/index.js"
123
+ },
124
+ "./handlers/index": {
125
+ "types": "./dist/handlers/index.d.ts",
126
+ "bun": "./dist/handlers/index.js",
127
+ "node": "./dist/node/handlers/index.mjs",
128
+ "browser": "./dist/browser/handlers/index.js",
129
+ "default": "./dist/handlers/index.js"
130
+ },
131
+ "./handlers/memory.handlers": {
132
+ "types": "./dist/handlers/memory.handlers.d.ts",
133
+ "bun": "./dist/handlers/memory.handlers.js",
134
+ "node": "./dist/node/handlers/memory.handlers.mjs",
135
+ "browser": "./dist/browser/handlers/memory.handlers.js",
136
+ "default": "./dist/handlers/memory.handlers.js"
137
+ },
138
+ "./kb-update-pipeline.feature": {
139
+ "types": "./dist/kb-update-pipeline.feature.d.ts",
140
+ "bun": "./dist/kb-update-pipeline.feature.js",
141
+ "node": "./dist/node/kb-update-pipeline.feature.mjs",
142
+ "browser": "./dist/browser/kb-update-pipeline.feature.js",
143
+ "default": "./dist/kb-update-pipeline.feature.js"
144
+ },
145
+ "./operations": {
146
+ "types": "./dist/operations/index.d.ts",
147
+ "bun": "./dist/operations/index.js",
148
+ "node": "./dist/node/operations/index.mjs",
149
+ "browser": "./dist/browser/operations/index.js",
150
+ "default": "./dist/operations/index.js"
151
+ },
152
+ "./operations/index": {
153
+ "types": "./dist/operations/index.d.ts",
154
+ "bun": "./dist/operations/index.js",
155
+ "node": "./dist/node/operations/index.mjs",
156
+ "browser": "./dist/browser/operations/index.js",
157
+ "default": "./dist/operations/index.js"
158
+ },
159
+ "./operations/pipeline": {
160
+ "types": "./dist/operations/pipeline.d.ts",
161
+ "bun": "./dist/operations/pipeline.js",
162
+ "node": "./dist/node/operations/pipeline.mjs",
163
+ "browser": "./dist/browser/operations/pipeline.js",
164
+ "default": "./dist/operations/pipeline.js"
165
+ },
166
+ "./presentations": {
167
+ "types": "./dist/presentations.d.ts",
168
+ "bun": "./dist/presentations.js",
169
+ "node": "./dist/node/presentations.mjs",
170
+ "browser": "./dist/browser/presentations.js",
171
+ "default": "./dist/presentations.js"
172
+ },
173
+ "./tests/operations.test-spec": {
174
+ "types": "./dist/tests/operations.test-spec.d.ts",
175
+ "bun": "./dist/tests/operations.test-spec.js",
176
+ "node": "./dist/node/tests/operations.test-spec.mjs",
177
+ "browser": "./dist/browser/tests/operations.test-spec.js",
178
+ "default": "./dist/tests/operations.test-spec.js"
179
+ }
64
180
  },
65
181
  "registry": "https://registry.npmjs.org/"
66
182
  },
package/tsdown.config.js CHANGED
@@ -1,5 +1,4 @@
1
- import { defineConfig } from 'tsdown';
2
- import { moduleLibrary, withDevExports } from '@contractspec/tool.tsdown';
1
+ import { defineConfig, moduleLibrary, withDevExports } from '@contractspec/tool.bun';
3
2
 
4
3
  export default defineConfig(() => ({
5
4
  ...moduleLibrary,
@@ -1,55 +0,0 @@
1
- $ tsdown
2
- ℹ tsdown v0.19.0 powered by rolldown v1.0.0-beta.59
3
- ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/kb-update-pipeline/tsdown.config.js
4
- ℹ entry: src/events.ts, src/example.ts, src/index.ts, src/kb-update-pipeline.feature.ts, src/presentations.ts, src/docs/index.ts, src/docs/kb-update-pipeline.docblock.ts, src/entities/index.ts, src/entities/models.ts, src/handlers/index.ts, src/handlers/memory.handlers.ts, src/operations/index.ts, src/operations/pipeline.ts, src/tests/operations.test-spec.ts
5
- ℹ target: esnext
6
- ℹ tsconfig: tsconfig.json
7
- ℹ Build start
8
- ℹ Cleaning 50 files
9
- ℹ dist/operations/pipeline.js 4.95 kB │ gzip: 1.37 kB
10
- ℹ dist/events.js 3.69 kB │ gzip: 0.73 kB
11
- ℹ dist/handlers/memory.handlers.js 3.37 kB │ gzip: 1.12 kB
12
- ℹ dist/kb-update-pipeline.feature.js 2.35 kB │ gzip: 0.68 kB
13
- ℹ dist/tests/operations.test-spec.js 2.13 kB │ gzip: 0.50 kB
14
- ℹ dist/presentations.js 1.90 kB │ gzip: 0.63 kB
15
- ℹ dist/entities/models.js 1.81 kB │ gzip: 0.53 kB
16
- ℹ dist/docs/kb-update-pipeline.docblock.js 1.49 kB │ gzip: 0.71 kB
17
- ℹ dist/index.js 1.44 kB │ gzip: 0.42 kB
18
- ℹ dist/example.js 1.05 kB │ gzip: 0.55 kB
19
- ℹ dist/operations/index.js 0.31 kB │ gzip: 0.14 kB
20
- ℹ dist/entities/index.js 0.25 kB │ gzip: 0.13 kB
21
- ℹ dist/handlers/index.js 0.16 kB │ gzip: 0.10 kB
22
- ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
23
- ℹ dist/handlers/memory.handlers.js.map 8.13 kB │ gzip: 2.34 kB
24
- ℹ dist/operations/pipeline.js.map 7.20 kB │ gzip: 1.81 kB
25
- ℹ dist/events.js.map 5.65 kB │ gzip: 1.04 kB
26
- ℹ dist/tests/operations.test-spec.js.map 3.64 kB │ gzip: 0.76 kB
27
- ℹ dist/kb-update-pipeline.feature.js.map 3.48 kB │ gzip: 1.02 kB
28
- ℹ dist/presentations.js.map 2.87 kB │ gzip: 0.83 kB
29
- ℹ dist/entities/models.js.map 2.68 kB │ gzip: 0.81 kB
30
- ℹ dist/docs/kb-update-pipeline.docblock.js.map 2.00 kB │ gzip: 0.89 kB
31
- ℹ dist/example.js.map 1.51 kB │ gzip: 0.75 kB
32
- ℹ dist/handlers/memory.handlers.d.ts.map 0.92 kB │ gzip: 0.44 kB
33
- ℹ dist/events.d.ts.map 0.81 kB │ gzip: 0.33 kB
34
- ℹ dist/operations/pipeline.d.ts.map 0.76 kB │ gzip: 0.33 kB
35
- ℹ dist/entities/models.d.ts.map 0.47 kB │ gzip: 0.28 kB
36
- ℹ dist/tests/operations.test-spec.d.ts.map 0.23 kB │ gzip: 0.16 kB
37
- ℹ dist/presentations.d.ts.map 0.20 kB │ gzip: 0.15 kB
38
- ℹ dist/kb-update-pipeline.feature.d.ts.map 0.18 kB │ gzip: 0.15 kB
39
- ℹ dist/example.d.ts.map 0.14 kB │ gzip: 0.13 kB
40
- ℹ dist/operations/pipeline.d.ts 4.37 kB │ gzip: 0.58 kB
41
- ℹ dist/events.d.ts 2.54 kB │ gzip: 0.43 kB
42
- ℹ dist/entities/models.d.ts 1.98 kB │ gzip: 0.41 kB
43
- ℹ dist/handlers/memory.handlers.d.ts 1.94 kB │ gzip: 0.64 kB
44
- ℹ dist/index.d.ts 1.48 kB │ gzip: 0.41 kB
45
- ℹ dist/presentations.d.ts 0.52 kB │ gzip: 0.20 kB
46
- ℹ dist/tests/operations.test-spec.d.ts 0.47 kB │ gzip: 0.22 kB
47
- ℹ dist/kb-update-pipeline.feature.d.ts 0.32 kB │ gzip: 0.19 kB
48
- ℹ dist/operations/index.d.ts 0.31 kB │ gzip: 0.13 kB
49
- ℹ dist/example.d.ts 0.25 kB │ gzip: 0.17 kB
50
- ℹ dist/handlers/index.d.ts 0.25 kB │ gzip: 0.10 kB
51
- ℹ dist/entities/index.d.ts 0.25 kB │ gzip: 0.13 kB
52
- ℹ dist/docs/index.d.ts 0.01 kB │ gzip: 0.03 kB
53
- ℹ dist/docs/kb-update-pipeline.docblock.d.ts 0.01 kB │ gzip: 0.03 kB
54
- ℹ 45 files, total: 80.50 kB
55
- ✔ Build complete in 23926ms
@@ -1 +0,0 @@
1
- {"version":3,"file":"kb-update-pipeline.docblock.js","names":[],"sources":["../../src/docs/kb-update-pipeline.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\nimport { registerDocBlocks } from '@contractspec/lib.contracts/docs';\n\nconst docBlocks: DocBlock[] = [\n {\n id: 'docs.examples.kb-update-pipeline.goal',\n title: 'KB Update Pipeline — Goal',\n summary:\n 'Automation proposes KB patches; humans verify; publishing is blocked until approvals are complete.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/examples/kb-update-pipeline/goal',\n tags: ['knowledge', 'pipeline', 'hitl', 'audit'],\n body: `## Why it matters\n- Keeps humans as the verifiers (HITL) while automation does the busywork.\\n- Produces an auditable chain: source change -> diff -> proposal -> review -> publish.\\n\\n## Guardrails\\n- High-risk changes require expert approval.\\n- Publishing fails if any included rule versions are not approved.\\n- Review requests emit notifications/events.`,\n },\n {\n id: 'docs.examples.kb-update-pipeline.reference',\n title: 'KB Update Pipeline — Reference',\n summary:\n 'Entities, contracts, and events for the KB update pipeline example.',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/examples/kb-update-pipeline',\n tags: ['knowledge', 'reference'],\n body: `## Contracts\\n- kbPipeline.runWatch\\n- kbPipeline.createReviewTask\\n- kbPipeline.submitDecision\\n- kbPipeline.publishIfReady\\n\\n## Events\\n- kb.change.detected\\n- kb.change.summarized\\n- kb.patch.proposed\\n- kb.review.requested\\n- kb.review.decided`,\n },\n];\n\nregisterDocBlocks(docBlocks);\n"],"mappings":";;;AA6BA,kBA1B8B,CAC5B;CACE,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM;EAAC;EAAa;EAAY;EAAQ;EAAQ;CAChD,MAAM;;CAEP,EACD;CACE,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM,CAAC,aAAa,YAAY;CAChC,MAAM;CACP,CACF,CAE2B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","names":[],"sources":["../../src/entities/models.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n defineEnum,\n defineSchemaModel,\n} from '@contractspec/lib.schema';\n\nexport const ChangeRiskLevelEnum = defineEnum('ChangeRiskLevel', [\n 'low',\n 'medium',\n 'high',\n]);\n\nexport const ReviewAssignedRoleEnum = defineEnum('ReviewAssignedRole', [\n 'curator',\n 'expert',\n]);\n\nexport const ReviewDecisionEnum = defineEnum('ReviewDecision', [\n 'approve',\n 'reject',\n]);\n\nexport const ChangeCandidateModel = defineSchemaModel({\n name: 'ChangeCandidate',\n description: 'Candidate change detected in a source document.',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n sourceDocumentId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n detectedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n diffSummary: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n riskLevel: { type: ChangeRiskLevelEnum, isOptional: false },\n },\n});\n\nexport const ReviewTaskModel = defineSchemaModel({\n name: 'ReviewTask',\n description: 'Human verification task for a change candidate.',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n changeCandidateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }, // open|decided\n assignedRole: { type: ReviewAssignedRoleEnum, isOptional: false },\n decision: { type: ReviewDecisionEnum, isOptional: true },\n decidedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n decidedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n"],"mappings":";;;AAMA,MAAa,sBAAsB,WAAW,mBAAmB;CAC/D;CACA;CACA;CACD,CAAC;AAEF,MAAa,yBAAyB,WAAW,sBAAsB,CACrE,WACA,SACD,CAAC;AAEF,MAAa,qBAAqB,WAAW,kBAAkB,CAC7D,WACA,SACD,CAAC;AAEF,MAAa,uBAAuB,kBAAkB;CACpD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,IAAI;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACjE,kBAAkB;GAChB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,YAAY;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE,aAAa;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAC1E,WAAW;GAAE,MAAM;GAAqB,YAAY;GAAO;EAC5D;CACF,CAAC;AAEF,MAAa,kBAAkB,kBAAkB;CAC/C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,IAAI;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACjE,mBAAmB;GACjB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,QAAQ;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACrE,cAAc;GAAE,MAAM;GAAwB,YAAY;GAAO;EACjE,UAAU;GAAE,MAAM;GAAoB,YAAY;GAAM;EACxD,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAM;EAChE,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACxE;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","names":[],"sources":["../src/events.ts"],"sourcesContent":["import {\n defineEvent,\n defineSchemaModel,\n StabilityEnum,\n} from '@contractspec/lib.contracts';\nimport { ScalarTypeEnum } from '@contractspec/lib.schema';\n\nconst KbChangeDetectedPayload = defineSchemaModel({\n name: 'KbChangeDetectedPayload',\n description: 'Emitted when a source change is detected.',\n fields: {\n changeCandidateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n sourceDocumentId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n riskLevel: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nexport const KbChangeDetectedEvent = defineEvent({\n meta: {\n key: 'kb.change.detected',\n version: '1.0.0',\n description: 'KB source change detected.',\n stability: StabilityEnum.Experimental,\n owners: [],\n tags: [],\n },\n payload: KbChangeDetectedPayload,\n});\n\nconst KbChangeSummarizedPayload = defineSchemaModel({\n name: 'KbChangeSummarizedPayload',\n description: 'Emitted when a change summary is produced.',\n fields: {\n changeCandidateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n summary: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n riskLevel: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nexport const KbChangeSummarizedEvent = defineEvent({\n meta: {\n key: 'kb.change.summarized',\n version: '1.0.0',\n description: 'KB change summarized.',\n stability: StabilityEnum.Experimental,\n owners: [],\n tags: [],\n },\n payload: KbChangeSummarizedPayload,\n});\n\nconst KbPatchProposedPayload = defineSchemaModel({\n name: 'KbPatchProposedPayload',\n description: 'Emitted when draft rule patches are proposed.',\n fields: {\n changeCandidateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n proposedRuleVersionIds: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: false,\n },\n },\n});\n\nexport const KbPatchProposedEvent = defineEvent({\n meta: {\n key: 'kb.patch.proposed',\n version: '1.0.0',\n description: 'KB rule patch proposed (draft versions created).',\n stability: StabilityEnum.Experimental,\n owners: [],\n tags: [],\n },\n payload: KbPatchProposedPayload,\n});\n\nconst KbReviewRequestedPayload = defineSchemaModel({\n name: 'KbReviewRequestedPayload',\n description: 'Emitted when a review is requested.',\n fields: {\n reviewTaskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n changeCandidateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n assignedRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nexport const KbReviewRequestedEvent = defineEvent({\n meta: {\n key: 'kb.review.requested',\n version: '1.0.0',\n description: 'KB review requested.',\n stability: StabilityEnum.Experimental,\n owners: [],\n tags: [],\n },\n payload: KbReviewRequestedPayload,\n});\n\nconst KbReviewDecidedPayload = defineSchemaModel({\n name: 'KbReviewDecidedPayload',\n description: 'Emitted when a review task is decided.',\n fields: {\n reviewTaskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n decision: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n decidedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nexport const KbReviewDecidedEvent = defineEvent({\n meta: {\n key: 'kb.review.decided',\n version: '1.0.0',\n description: 'KB review decided.',\n stability: StabilityEnum.Experimental,\n owners: [],\n tags: [],\n },\n payload: KbReviewDecidedPayload,\n});\n"],"mappings":";;;;AAOA,MAAM,0BAA0B,kBAAkB;CAChD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,mBAAmB;GACjB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,kBAAkB;GAChB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE;CACF,CAAC;AAEF,MAAa,wBAAwB,YAAY;CAC/C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW,cAAc;EACzB,QAAQ,EAAE;EACV,MAAM,EAAE;EACT;CACD,SAAS;CACV,CAAC;AAEF,MAAM,4BAA4B,kBAAkB;CAClD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,mBAAmB;GACjB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE;CACF,CAAC;AAEF,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW,cAAc;EACzB,QAAQ,EAAE;EACV,MAAM,EAAE;EACT;CACD,SAAS;CACV,CAAC;AAEF,MAAM,yBAAyB,kBAAkB;CAC/C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,mBAAmB;GACjB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,wBAAwB;GACtB,MAAM,eAAe,iBAAiB;GACtC,SAAS;GACT,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAa,uBAAuB,YAAY;CAC9C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW,cAAc;EACzB,QAAQ,EAAE;EACV,MAAM,EAAE;EACT;CACD,SAAS;CACV,CAAC;AAEF,MAAM,2BAA2B,kBAAkB;CACjD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAC3E,mBAAmB;GACjB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAC5E;CACF,CAAC;AAEF,MAAa,yBAAyB,YAAY;CAChD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW,cAAc;EACzB,QAAQ,EAAE;EACV,MAAM,EAAE;EACT;CACD,SAAS;CACV,CAAC;AAEF,MAAM,yBAAyB,kBAAkB;CAC/C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAC3E,UAAU;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACvE,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE;CACF,CAAC;AAEF,MAAa,uBAAuB,YAAY;CAC9C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW,cAAc;EACzB,QAAQ,EAAE;EACV,MAAM,EAAE;EACT;CACD,SAAS;CACV,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["import { defineExample } from '@contractspec/lib.contracts';\n\nconst example = defineExample({\n meta: {\n key: 'kb-update-pipeline',\n version: '1.0.0',\n title: 'KB Update Pipeline',\n description:\n 'Automation proposes KB updates; humans verify; everything audited and notified.',\n kind: 'knowledge',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['knowledge', 'pipeline', 'hitl', 'audit'],\n },\n docs: {\n rootDocId: 'docs.examples.kb-update-pipeline',\n },\n entrypoints: {\n packageName: '@contractspec/example.kb-update-pipeline',\n feature: './feature',\n contracts: './contracts',\n handlers: './handlers',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: { enabled: true, modes: ['markdown', 'specs', 'builder'] },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n});\n\nexport default example;\n"],"mappings":";;;AAEA,MAAM,UAAU,cAAc;CAC5B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAa;GAAY;GAAQ;GAAQ;EACjD;CACD,MAAM,EACJ,WAAW,oCACZ;CACD,aAAa;EACX,aAAa;EACb,SAAS;EACT,WAAW;EACX,UAAU;EACV,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GAAE,SAAS;GAAM,OAAO;IAAC;IAAY;IAAS;IAAU;GAAE;EACnE,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF,CAAC;AAEF,sBAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.handlers.js","names":[],"sources":["../../src/handlers/memory.handlers.ts"],"sourcesContent":["interface ChangeCandidate {\n id: string;\n sourceDocumentId: string;\n detectedAt: Date;\n diffSummary: string;\n riskLevel: 'low' | 'medium' | 'high';\n}\n\ninterface ReviewTask {\n id: string;\n changeCandidateId: string;\n status: 'open' | 'decided';\n assignedRole: 'curator' | 'expert';\n decision?: 'approve' | 'reject';\n decidedAt?: Date;\n decidedBy?: string;\n}\n\nexport interface PipelineMemoryStore {\n candidates: Map<string, ChangeCandidate>;\n reviewTasks: Map<string, ReviewTask>;\n proposedRuleVersionIdsByCandidate: Map<string, string[]>;\n approvedRuleVersionIds: Set<string>;\n notifications: {\n kind: 'kb.review.requested';\n reviewTaskId: string;\n changeCandidateId: string;\n assignedRole: 'curator' | 'expert';\n createdAt: Date;\n }[];\n}\n\nexport function createPipelineMemoryStore(): PipelineMemoryStore {\n return {\n candidates: new Map(),\n reviewTasks: new Map(),\n proposedRuleVersionIdsByCandidate: new Map(),\n approvedRuleVersionIds: new Set(),\n notifications: [],\n };\n}\n\nfunction stableId(prefix: string, value: string): string {\n return `${prefix}_${value.replace(/[^a-zA-Z0-9_-]/g, '_')}`;\n}\n\nexport interface PipelineMemoryHandlers {\n runWatch(input: {\n jurisdiction: string;\n }): Promise<{ candidates: ChangeCandidate[] }>;\n createReviewTask(input: { changeCandidateId: string }): Promise<ReviewTask>;\n proposeRulePatch(input: {\n changeCandidateId: string;\n proposedRuleVersionIds: string[];\n }): Promise<{ proposedRuleVersionIds: string[] }>;\n markRuleVersionApproved(input: {\n ruleVersionId: string;\n }): Promise<{ ruleVersionId: string }>;\n submitDecision(input: {\n reviewTaskId: string;\n decision: 'approve' | 'reject';\n decidedBy: string;\n decidedByRole: 'curator' | 'expert';\n }): Promise<ReviewTask>;\n publishIfReady(input: {\n jurisdiction: string;\n }): Promise<{ published: boolean; reason?: string }>;\n}\n\nexport function createPipelineMemoryHandlers(\n store: PipelineMemoryStore\n): PipelineMemoryHandlers {\n async function runWatch(input: { jurisdiction: string }) {\n // demo: always returns empty unless caller pre-seeds candidates\n const candidates = [...store.candidates.values()].filter(\n (c) => c.sourceDocumentId.startsWith(`${input.jurisdiction}_`) || true\n );\n return { candidates };\n }\n\n async function createReviewTask(input: { changeCandidateId: string }) {\n const candidate = store.candidates.get(input.changeCandidateId);\n if (!candidate) throw new Error('CHANGE_CANDIDATE_NOT_FOUND');\n const assignedRole = candidate.riskLevel === 'high' ? 'expert' : 'curator';\n const id = stableId('review', input.changeCandidateId);\n const task: ReviewTask = {\n id,\n changeCandidateId: input.changeCandidateId,\n status: 'open',\n assignedRole,\n decision: undefined,\n decidedAt: undefined,\n decidedBy: undefined,\n };\n store.reviewTasks.set(id, task);\n store.notifications.push({\n kind: 'kb.review.requested',\n reviewTaskId: id,\n changeCandidateId: input.changeCandidateId,\n assignedRole,\n createdAt: new Date(),\n });\n return task;\n }\n\n async function proposeRulePatch(input: {\n changeCandidateId: string;\n proposedRuleVersionIds: string[];\n }): Promise<{ proposedRuleVersionIds: string[] }> {\n if (!store.candidates.has(input.changeCandidateId)) {\n throw new Error('CHANGE_CANDIDATE_NOT_FOUND');\n }\n store.proposedRuleVersionIdsByCandidate.set(input.changeCandidateId, [\n ...input.proposedRuleVersionIds,\n ]);\n return { proposedRuleVersionIds: [...input.proposedRuleVersionIds] };\n }\n\n async function markRuleVersionApproved(input: {\n ruleVersionId: string;\n }): Promise<{ ruleVersionId: string }> {\n store.approvedRuleVersionIds.add(input.ruleVersionId);\n return { ruleVersionId: input.ruleVersionId };\n }\n\n async function submitDecision(input: {\n reviewTaskId: string;\n decision: 'approve' | 'reject';\n decidedBy: string;\n decidedByRole: 'curator' | 'expert';\n }) {\n const task = store.reviewTasks.get(input.reviewTaskId);\n if (!task) throw new Error('REVIEW_TASK_NOT_FOUND');\n const candidate = store.candidates.get(task.changeCandidateId);\n if (!candidate) throw new Error('CHANGE_CANDIDATE_NOT_FOUND');\n if (candidate.riskLevel === 'high' && input.decision === 'approve') {\n if (input.decidedByRole !== 'expert') throw new Error('FORBIDDEN_ROLE');\n }\n const decided: ReviewTask = {\n ...task,\n status: 'decided',\n decision: input.decision,\n decidedAt: new Date(),\n decidedBy: input.decidedBy,\n };\n store.reviewTasks.set(decided.id, decided);\n return decided;\n }\n\n async function publishIfReady(_input: { jurisdiction: string }) {\n const openTasks = [...store.reviewTasks.values()].filter(\n (t) => t.status !== 'decided'\n );\n if (openTasks.length) {\n throw new Error('NOT_READY');\n }\n const rejected = [...store.reviewTasks.values()].some(\n (t) => t.decision === 'reject'\n );\n if (rejected) return { published: false, reason: 'REJECTED' };\n\n // Ensure every proposed rule version is approved before publishing.\n for (const task of store.reviewTasks.values()) {\n if (task.decision !== 'approve') continue;\n const proposed =\n store.proposedRuleVersionIdsByCandidate.get(task.changeCandidateId) ??\n [];\n const unapproved = proposed.filter(\n (id) => !store.approvedRuleVersionIds.has(id)\n );\n if (unapproved.length) {\n throw new Error('NOT_READY');\n }\n }\n return { published: true };\n }\n\n return {\n runWatch,\n createReviewTask,\n proposeRulePatch,\n markRuleVersionApproved,\n submitDecision,\n publishIfReady,\n };\n}\n"],"mappings":";AAgCA,SAAgB,4BAAiD;AAC/D,QAAO;EACL,4BAAY,IAAI,KAAK;EACrB,6BAAa,IAAI,KAAK;EACtB,mDAAmC,IAAI,KAAK;EAC5C,wCAAwB,IAAI,KAAK;EACjC,eAAe,EAAE;EAClB;;AAGH,SAAS,SAAS,QAAgB,OAAuB;AACvD,QAAO,GAAG,OAAO,GAAG,MAAM,QAAQ,mBAAmB,IAAI;;AA0B3D,SAAgB,6BACd,OACwB;CACxB,eAAe,SAAS,OAAiC;AAKvD,SAAO,EAAE,YAHU,CAAC,GAAG,MAAM,WAAW,QAAQ,CAAC,CAAC,QAC/C,MAAM,EAAE,iBAAiB,WAAW,GAAG,MAAM,aAAa,GAAG,IAAI,KACnE,EACoB;;CAGvB,eAAe,iBAAiB,OAAsC;EACpE,MAAM,YAAY,MAAM,WAAW,IAAI,MAAM,kBAAkB;AAC/D,MAAI,CAAC,UAAW,OAAM,IAAI,MAAM,6BAA6B;EAC7D,MAAM,eAAe,UAAU,cAAc,SAAS,WAAW;EACjE,MAAM,KAAK,SAAS,UAAU,MAAM,kBAAkB;EACtD,MAAM,OAAmB;GACvB;GACA,mBAAmB,MAAM;GACzB,QAAQ;GACR;GACA,UAAU;GACV,WAAW;GACX,WAAW;GACZ;AACD,QAAM,YAAY,IAAI,IAAI,KAAK;AAC/B,QAAM,cAAc,KAAK;GACvB,MAAM;GACN,cAAc;GACd,mBAAmB,MAAM;GACzB;GACA,2BAAW,IAAI,MAAM;GACtB,CAAC;AACF,SAAO;;CAGT,eAAe,iBAAiB,OAGkB;AAChD,MAAI,CAAC,MAAM,WAAW,IAAI,MAAM,kBAAkB,CAChD,OAAM,IAAI,MAAM,6BAA6B;AAE/C,QAAM,kCAAkC,IAAI,MAAM,mBAAmB,CACnE,GAAG,MAAM,uBACV,CAAC;AACF,SAAO,EAAE,wBAAwB,CAAC,GAAG,MAAM,uBAAuB,EAAE;;CAGtE,eAAe,wBAAwB,OAEA;AACrC,QAAM,uBAAuB,IAAI,MAAM,cAAc;AACrD,SAAO,EAAE,eAAe,MAAM,eAAe;;CAG/C,eAAe,eAAe,OAK3B;EACD,MAAM,OAAO,MAAM,YAAY,IAAI,MAAM,aAAa;AACtD,MAAI,CAAC,KAAM,OAAM,IAAI,MAAM,wBAAwB;EACnD,MAAM,YAAY,MAAM,WAAW,IAAI,KAAK,kBAAkB;AAC9D,MAAI,CAAC,UAAW,OAAM,IAAI,MAAM,6BAA6B;AAC7D,MAAI,UAAU,cAAc,UAAU,MAAM,aAAa,WACvD;OAAI,MAAM,kBAAkB,SAAU,OAAM,IAAI,MAAM,iBAAiB;;EAEzE,MAAM,UAAsB;GAC1B,GAAG;GACH,QAAQ;GACR,UAAU,MAAM;GAChB,2BAAW,IAAI,MAAM;GACrB,WAAW,MAAM;GAClB;AACD,QAAM,YAAY,IAAI,QAAQ,IAAI,QAAQ;AAC1C,SAAO;;CAGT,eAAe,eAAe,QAAkC;AAI9D,MAHkB,CAAC,GAAG,MAAM,YAAY,QAAQ,CAAC,CAAC,QAC/C,MAAM,EAAE,WAAW,UACrB,CACa,OACZ,OAAM,IAAI,MAAM,YAAY;AAK9B,MAHiB,CAAC,GAAG,MAAM,YAAY,QAAQ,CAAC,CAAC,MAC9C,MAAM,EAAE,aAAa,SACvB,CACa,QAAO;GAAE,WAAW;GAAO,QAAQ;GAAY;AAG7D,OAAK,MAAM,QAAQ,MAAM,YAAY,QAAQ,EAAE;AAC7C,OAAI,KAAK,aAAa,UAAW;AAOjC,QALE,MAAM,kCAAkC,IAAI,KAAK,kBAAkB,IACnE,EAAE,EACwB,QACzB,OAAO,CAAC,MAAM,uBAAuB,IAAI,GAAG,CAC9C,CACc,OACb,OAAM,IAAI,MAAM,YAAY;;AAGhC,SAAO,EAAE,WAAW,MAAM;;AAG5B,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kb-update-pipeline.feature.js","names":[],"sources":["../src/kb-update-pipeline.feature.ts"],"sourcesContent":["import { defineFeature } from '@contractspec/lib.contracts';\n\nexport const KbUpdatePipelineFeature = defineFeature({\n meta: {\n key: 'kb-update-pipeline',\n version: '1.0.0',\n title: 'KB Update Pipeline (HITL)',\n description:\n 'Automation proposes KB patches; humans verify; publishing is blocked until approvals are complete.',\n domain: 'knowledge',\n owners: ['@examples'],\n tags: ['knowledge', 'pipeline', 'hitl', 'audit', 'notifications'],\n stability: 'experimental',\n },\n operations: [\n { key: 'kbPipeline.runWatch', version: '1.0.0' },\n { key: 'kbPipeline.createReviewTask', version: '1.0.0' },\n { key: 'kbPipeline.submitDecision', version: '1.0.0' },\n { key: 'kbPipeline.publishIfReady', version: '1.0.0' },\n ],\n events: [\n { key: 'kb.change.detected', version: '1.0.0' },\n { key: 'kb.change.summarized', version: '1.0.0' },\n { key: 'kb.patch.proposed', version: '1.0.0' },\n { key: 'kb.review.requested', version: '1.0.0' },\n { key: 'kb.review.decided', version: '1.0.0' },\n ],\n presentations: [\n { key: 'kb.dashboard', version: '1.0.0' },\n { key: 'kb.review.list', version: '1.0.0' },\n { key: 'kb.review.form', version: '1.0.0' },\n ],\n opToPresentation: [\n {\n op: { key: 'kbPipeline.runWatch', version: '1.0.0' },\n pres: { key: 'kb.dashboard', version: '1.0.0' },\n },\n {\n op: { key: 'kbPipeline.createReviewTask', version: '1.0.0' },\n pres: { key: 'kb.review.list', version: '1.0.0' },\n },\n {\n op: { key: 'kbPipeline.submitDecision', version: '1.0.0' },\n pres: { key: 'kb.review.form', version: '1.0.0' },\n },\n ],\n presentationsTargets: [\n { key: 'kb.dashboard', version: '1.0.0', targets: ['react', 'markdown'] },\n { key: 'kb.review.list', version: '1.0.0', targets: ['react', 'markdown'] },\n { key: 'kb.review.form', version: '1.0.0', targets: ['react'] },\n ],\n capabilities: {\n requires: [\n { key: 'identity', version: '1.0.0' },\n { key: 'notifications', version: '1.0.0' },\n { key: 'audit-trail', version: '1.0.0' },\n ],\n },\n});\n"],"mappings":";;;AAEA,MAAa,0BAA0B,cAAc;CACnD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAa;GAAY;GAAQ;GAAS;GAAgB;EACjE,WAAW;EACZ;CACD,YAAY;EACV;GAAE,KAAK;GAAuB,SAAS;GAAS;EAChD;GAAE,KAAK;GAA+B,SAAS;GAAS;EACxD;GAAE,KAAK;GAA6B,SAAS;GAAS;EACtD;GAAE,KAAK;GAA6B,SAAS;GAAS;EACvD;CACD,QAAQ;EACN;GAAE,KAAK;GAAsB,SAAS;GAAS;EAC/C;GAAE,KAAK;GAAwB,SAAS;GAAS;EACjD;GAAE,KAAK;GAAqB,SAAS;GAAS;EAC9C;GAAE,KAAK;GAAuB,SAAS;GAAS;EAChD;GAAE,KAAK;GAAqB,SAAS;GAAS;EAC/C;CACD,eAAe;EACb;GAAE,KAAK;GAAgB,SAAS;GAAS;EACzC;GAAE,KAAK;GAAkB,SAAS;GAAS;EAC3C;GAAE,KAAK;GAAkB,SAAS;GAAS;EAC5C;CACD,kBAAkB;EAChB;GACE,IAAI;IAAE,KAAK;IAAuB,SAAS;IAAS;GACpD,MAAM;IAAE,KAAK;IAAgB,SAAS;IAAS;GAChD;EACD;GACE,IAAI;IAAE,KAAK;IAA+B,SAAS;IAAS;GAC5D,MAAM;IAAE,KAAK;IAAkB,SAAS;IAAS;GAClD;EACD;GACE,IAAI;IAAE,KAAK;IAA6B,SAAS;IAAS;GAC1D,MAAM;IAAE,KAAK;IAAkB,SAAS;IAAS;GAClD;EACF;CACD,sBAAsB;EACpB;GAAE,KAAK;GAAgB,SAAS;GAAS,SAAS,CAAC,SAAS,WAAW;GAAE;EACzE;GAAE,KAAK;GAAkB,SAAS;GAAS,SAAS,CAAC,SAAS,WAAW;GAAE;EAC3E;GAAE,KAAK;GAAkB,SAAS;GAAS,SAAS,CAAC,QAAQ;GAAE;EAChE;CACD,cAAc,EACZ,UAAU;EACR;GAAE,KAAK;GAAY,SAAS;GAAS;EACrC;GAAE,KAAK;GAAiB,SAAS;GAAS;EAC1C;GAAE,KAAK;GAAe,SAAS;GAAS;EACzC,EACF;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline.js","names":["defineSchemaModel"],"sources":["../../src/operations/pipeline.ts"],"sourcesContent":["import { defineCommand } from '@contractspec/lib.contracts';\nimport { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\n\nimport {\n ChangeCandidateModel,\n ReviewDecisionEnum,\n ReviewTaskModel,\n} from '../entities/models';\n\nconst RunWatchInput = defineSchemaModel({\n name: 'KbPipelineRunWatchInput',\n description: 'Trigger a watch cycle for KB sources (demo).',\n fields: {\n jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst RunWatchOutput = defineSchemaModel({\n name: 'KbPipelineRunWatchOutput',\n description: 'Output containing detected changes.',\n fields: {\n candidates: {\n type: ChangeCandidateModel,\n isArray: true,\n isOptional: false,\n },\n },\n});\n\nconst CreateReviewTaskInput = defineSchemaModel({\n name: 'KbPipelineCreateReviewTaskInput',\n description: 'Create a review task for a change candidate.',\n fields: {\n changeCandidateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n },\n});\n\nconst SubmitDecisionInput = defineSchemaModel({\n name: 'KbPipelineSubmitDecisionInput',\n description: 'Submit a decision for a review task.',\n fields: {\n reviewTaskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n decision: { type: ReviewDecisionEnum, isOptional: false },\n decidedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n decidedByRole: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n },\n});\n\nconst PublishIfReadyInput = defineSchemaModel({\n name: 'KbPipelinePublishIfReadyInput',\n description:\n 'Publish snapshot if approvals are satisfied for a jurisdiction.',\n fields: {\n jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst PublishIfReadyOutput = defineSchemaModel({\n name: 'KbPipelinePublishIfReadyOutput',\n description: 'Output for publish-if-ready operation.',\n fields: {\n published: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nexport const KbPipelineRunWatchContract = defineCommand({\n meta: {\n key: 'kbPipeline.runWatch',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@examples'],\n tags: ['knowledge', 'pipeline', 'jobs'],\n description: 'Detect source changes and create change candidates.',\n goal: 'Automate discovery of updates needing review.',\n context: 'Scheduled job or manual trigger in demos.',\n },\n io: { input: RunWatchInput, output: RunWatchOutput },\n policy: { auth: 'user' },\n});\n\nexport const KbPipelineCreateReviewTaskContract = defineCommand({\n meta: {\n key: 'kbPipeline.createReviewTask',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@examples'],\n tags: ['knowledge', 'pipeline', 'hitl'],\n description: 'Create a review task for a detected change.',\n goal: 'Route work to human verifiers.',\n context: 'Called after change detection or manual selection.',\n },\n io: { input: CreateReviewTaskInput, output: ReviewTaskModel },\n policy: { auth: 'user' },\n});\n\nexport const KbPipelineSubmitDecisionContract = defineCommand({\n meta: {\n key: 'kbPipeline.submitDecision',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@examples'],\n tags: ['knowledge', 'pipeline', 'hitl', 'rbac'],\n description: 'Submit approve/reject decision for a review task.',\n goal: 'Ensure humans verify before publishing.',\n context: 'Curator/expert reviews and decides.',\n },\n io: {\n input: SubmitDecisionInput,\n output: ReviewTaskModel,\n errors: {\n FORBIDDEN_ROLE: {\n description: 'Role not allowed to approve the given risk level',\n http: 403,\n gqlCode: 'FORBIDDEN_ROLE',\n when: 'curator attempts to approve a high-risk change',\n },\n REVIEW_TASK_NOT_FOUND: {\n description: 'Review task not found',\n http: 404,\n gqlCode: 'REVIEW_TASK_NOT_FOUND',\n when: 'reviewTaskId is invalid',\n },\n },\n },\n policy: { auth: 'user' },\n});\n\nexport const KbPipelinePublishIfReadyContract = defineCommand({\n meta: {\n key: 'kbPipeline.publishIfReady',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@examples'],\n tags: ['knowledge', 'pipeline', 'publishing'],\n description: 'Publish snapshot if ready (all approvals satisfied).',\n goal: 'Prevent publishing until all required approvals exist.',\n context: 'Called by job or UI to attempt publish.',\n },\n io: {\n input: PublishIfReadyInput,\n output: PublishIfReadyOutput,\n errors: {\n NOT_READY: {\n description: 'Publishing is blocked because approvals are incomplete',\n http: 409,\n gqlCode: 'NOT_READY',\n when: 'there are open review tasks or unapproved rule versions',\n },\n },\n },\n policy: { auth: 'user' },\n});\n"],"mappings":";;;;;AASA,MAAM,gBAAgBA,oBAAkB;CACtC,MAAM;CACN,aAAa;CACb,QAAQ,EACN,cAAc;EAAE,MAAM,eAAe,iBAAiB;EAAE,YAAY;EAAO,EAC5E;CACF,CAAC;AAEF,MAAM,iBAAiBA,oBAAkB;CACvC,MAAM;CACN,aAAa;CACb,QAAQ,EACN,YAAY;EACV,MAAM;EACN,SAAS;EACT,YAAY;EACb,EACF;CACF,CAAC;AAEF,MAAM,wBAAwBA,oBAAkB;CAC9C,MAAM;CACN,aAAa;CACb,QAAQ,EACN,mBAAmB;EACjB,MAAM,eAAe,iBAAiB;EACtC,YAAY;EACb,EACF;CACF,CAAC;AAEF,MAAM,sBAAsBA,oBAAkB;CAC5C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAC3E,UAAU;GAAE,MAAM;GAAoB,YAAY;GAAO;EACzD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,eAAe;GACb,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAM,sBAAsBA,oBAAkB;CAC5C,MAAM;CACN,aACE;CACF,QAAQ,EACN,cAAc;EAAE,MAAM,eAAe,iBAAiB;EAAE,YAAY;EAAO,EAC5E;CACF,CAAC;AAEF,MAAM,uBAAuBA,oBAAkB;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,SAAS;GAAE,YAAY;GAAO;EAChE,QAAQ;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACrE;CACF,CAAC;AAEF,MAAa,6BAA6B,cAAc;CACtD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAa;GAAY;GAAO;EACvC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EAAE,OAAO;EAAe,QAAQ;EAAgB;CACpD,QAAQ,EAAE,MAAM,QAAQ;CACzB,CAAC;AAEF,MAAa,qCAAqC,cAAc;CAC9D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAa;GAAY;GAAO;EACvC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EAAE,OAAO;EAAuB,QAAQ;EAAiB;CAC7D,QAAQ,EAAE,MAAM,QAAQ;CACzB,CAAC;AAEF,MAAa,mCAAmC,cAAc;CAC5D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAa;GAAY;GAAQ;GAAO;EAC/C,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACR,QAAQ;GACN,gBAAgB;IACd,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACD,uBAAuB;IACrB,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACF;EACF;CACD,QAAQ,EAAE,MAAM,QAAQ;CACzB,CAAC;AAEF,MAAa,mCAAmC,cAAc;CAC5D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAa;GAAY;GAAa;EAC7C,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACR,QAAQ,EACN,WAAW;GACT,aAAa;GACb,MAAM;GACN,SAAS;GACT,MAAM;GACP,EACF;EACF;CACD,QAAQ,EAAE,MAAM,QAAQ;CACzB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"presentations.js","names":[],"sources":["../src/presentations.ts"],"sourcesContent":["import { definePresentation, StabilityEnum } from '@contractspec/lib.contracts';\nimport { ChangeCandidateModel, ReviewTaskModel } from './entities/models';\n\nexport const KbDashboardPresentation = definePresentation({\n meta: {\n key: 'kb.dashboard',\n version: '1.0.0',\n title: 'KB Update Dashboard',\n description: 'Overview of KB change candidates and review tasks.',\n domain: 'knowledge',\n owners: ['@examples'],\n tags: ['dashboard', 'knowledge'],\n stability: StabilityEnum.Experimental,\n goal: 'Visualize status',\n context: 'Dashboard',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'KbDashboard',\n props: ChangeCandidateModel, // Simplified props mapping for example\n },\n targets: ['react', 'markdown'],\n});\n\nexport const KbReviewListPresentation = definePresentation({\n meta: {\n key: 'kb.review.list',\n version: '1.0.0',\n title: 'Review Tasks',\n description: 'List of pending review tasks for the current user.',\n domain: 'knowledge',\n owners: ['@examples'],\n tags: ['list', 'review'],\n stability: StabilityEnum.Experimental,\n goal: 'List tasks',\n context: 'Inbox',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'ReviewTaskList',\n props: ReviewTaskModel,\n },\n targets: ['react', 'markdown'],\n});\n\nexport const KbReviewFormPresentation = definePresentation({\n meta: {\n key: 'kb.review.form',\n version: '1.0.0',\n title: 'Review Change',\n description: 'Form to approve or reject a KB change candidate.',\n domain: 'knowledge',\n owners: ['@examples'],\n tags: ['form', 'review'],\n stability: StabilityEnum.Experimental,\n goal: 'Review',\n context: 'Detail',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'ReviewDecisionForm',\n props: ReviewTaskModel,\n },\n targets: ['react'],\n});\n"],"mappings":";;;;AAGA,MAAa,0BAA0B,mBAAmB;CACxD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,aAAa,YAAY;EAChC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,SAAS,WAAW;CAC/B,CAAC;AAEF,MAAa,2BAA2B,mBAAmB;CACzD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,SAAS;EACxB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,SAAS,WAAW;CAC/B,CAAC;AAEF,MAAa,2BAA2B,mBAAmB;CACzD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,SAAS;EACxB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,QAAQ;CACnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"operations.test-spec.js","names":[],"sources":["../../src/tests/operations.test-spec.ts"],"sourcesContent":["import { defineTestSpec } from '@contractspec/lib.contracts';\n\nexport const RunWatchTest = defineTestSpec({\n meta: {\n key: 'kbPipeline.runWatch.test',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@example.kb-update-pipeline'],\n description: 'Test for run watch operation',\n tags: ['test'],\n },\n target: {\n type: 'operation',\n operation: { key: 'kbPipeline.runWatch', version: '1.0.0' },\n },\n scenarios: [\n {\n key: 'success',\n when: { operation: { key: 'kbPipeline.runWatch' } },\n then: [{ type: 'expectOutput', match: {} }],\n },\n {\n key: 'error',\n when: { operation: { key: 'kbPipeline.runWatch' } },\n then: [{ type: 'expectError' }],\n },\n ],\n});\n\nexport const CreateReviewTaskTest = defineTestSpec({\n meta: {\n key: 'kbPipeline.createReviewTask.test',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@example.kb-update-pipeline'],\n description: 'Test for creating review task',\n tags: ['test'],\n },\n target: {\n type: 'operation',\n operation: { key: 'kbPipeline.createReviewTask', version: '1.0.0' },\n },\n scenarios: [\n {\n key: 'success',\n when: { operation: { key: 'kbPipeline.createReviewTask' } },\n then: [{ type: 'expectOutput', match: {} }],\n },\n {\n key: 'error',\n when: { operation: { key: 'kbPipeline.createReviewTask' } },\n then: [{ type: 'expectError' }],\n },\n ],\n});\n\nexport const SubmitDecisionTest = defineTestSpec({\n meta: {\n key: 'kbPipeline.submitDecision.test',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@example.kb-update-pipeline'],\n description: 'Test for submitting decision',\n tags: ['test'],\n },\n target: {\n type: 'operation',\n operation: { key: 'kbPipeline.submitDecision', version: '1.0.0' },\n },\n scenarios: [\n {\n key: 'success',\n when: { operation: { key: 'kbPipeline.submitDecision' } },\n then: [{ type: 'expectOutput', match: {} }],\n },\n {\n key: 'error',\n when: { operation: { key: 'kbPipeline.submitDecision' } },\n then: [{ type: 'expectError' }],\n },\n ],\n});\n"],"mappings":";;;AAEA,MAAa,eAAe,eAAe;CACzC,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,8BAA8B;EACvC,aAAa;EACb,MAAM,CAAC,OAAO;EACf;CACD,QAAQ;EACN,MAAM;EACN,WAAW;GAAE,KAAK;GAAuB,SAAS;GAAS;EAC5D;CACD,WAAW,CACT;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,uBAAuB,EAAE;EACnD,MAAM,CAAC;GAAE,MAAM;GAAgB,OAAO,EAAE;GAAE,CAAC;EAC5C,EACD;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,uBAAuB,EAAE;EACnD,MAAM,CAAC,EAAE,MAAM,eAAe,CAAC;EAChC,CACF;CACF,CAAC;AAEF,MAAa,uBAAuB,eAAe;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,8BAA8B;EACvC,aAAa;EACb,MAAM,CAAC,OAAO;EACf;CACD,QAAQ;EACN,MAAM;EACN,WAAW;GAAE,KAAK;GAA+B,SAAS;GAAS;EACpE;CACD,WAAW,CACT;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,+BAA+B,EAAE;EAC3D,MAAM,CAAC;GAAE,MAAM;GAAgB,OAAO,EAAE;GAAE,CAAC;EAC5C,EACD;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,+BAA+B,EAAE;EAC3D,MAAM,CAAC,EAAE,MAAM,eAAe,CAAC;EAChC,CACF;CACF,CAAC;AAEF,MAAa,qBAAqB,eAAe;CAC/C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,8BAA8B;EACvC,aAAa;EACb,MAAM,CAAC,OAAO;EACf;CACD,QAAQ;EACN,MAAM;EACN,WAAW;GAAE,KAAK;GAA6B,SAAS;GAAS;EAClE;CACD,WAAW,CACT;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,6BAA6B,EAAE;EACzD,MAAM,CAAC;GAAE,MAAM;GAAgB,OAAO,EAAE;GAAE,CAAC;EAC5C,EACD;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,6BAA6B,EAAE;EACzD,MAAM,CAAC,EAAE,MAAM,eAAe,CAAC;EAChC,CACF;CACF,CAAC"}