@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.
- package/.turbo/turbo-build.log +59 -56
- package/.turbo/turbo-prebuild.log +1 -0
- package/CHANGELOG.md +30 -0
- package/dist/browser/docs/index.js +43 -0
- package/dist/browser/docs/kb-update-pipeline.docblock.js +43 -0
- package/dist/browser/entities/index.js +56 -0
- package/dist/browser/entities/models.js +56 -0
- package/dist/browser/events.js +132 -0
- package/dist/browser/example.js +35 -0
- package/dist/browser/handlers/index.js +109 -0
- package/dist/browser/handlers/memory.handlers.js +109 -0
- package/dist/browser/index.js +646 -0
- package/dist/browser/kb-update-pipeline.feature.js +61 -0
- package/dist/browser/operations/index.js +199 -0
- package/dist/browser/operations/pipeline.js +199 -0
- package/dist/browser/presentations.js +120 -0
- package/dist/browser/tests/operations.test-spec.js +85 -0
- package/dist/docs/index.d.ts +2 -1
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +44 -1
- package/dist/docs/kb-update-pipeline.docblock.d.ts +2 -1
- package/dist/docs/kb-update-pipeline.docblock.d.ts.map +1 -0
- package/dist/docs/kb-update-pipeline.docblock.js +41 -28
- package/dist/entities/index.d.ts +2 -2
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +57 -3
- package/dist/entities/models.d.ts +53 -58
- package/dist/entities/models.d.ts.map +1 -1
- package/dist/entities/models.js +54 -71
- package/dist/events.d.ts +62 -68
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +122 -139
- package/dist/example.d.ts +2 -6
- package/dist/example.d.ts.map +1 -1
- package/dist/example.js +33 -47
- package/dist/handlers/index.d.ts +2 -2
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +110 -3
- package/dist/handlers/memory.handlers.d.ts +58 -60
- package/dist/handlers/memory.handlers.d.ts.map +1 -1
- package/dist/handlers/memory.handlers.js +104 -87
- package/dist/handlers/memory.handlers.test.d.ts +2 -0
- package/dist/handlers/memory.handlers.test.d.ts.map +1 -0
- package/dist/index.d.ts +14 -10
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +647 -12
- package/dist/kb-update-pipeline.feature.d.ts +1 -6
- package/dist/kb-update-pipeline.feature.d.ts.map +1 -1
- package/dist/kb-update-pipeline.feature.js +60 -140
- package/dist/node/docs/index.js +43 -0
- package/dist/node/docs/kb-update-pipeline.docblock.js +43 -0
- package/dist/node/entities/index.js +56 -0
- package/dist/node/entities/models.js +56 -0
- package/dist/node/events.js +132 -0
- package/dist/node/example.js +35 -0
- package/dist/node/handlers/index.js +109 -0
- package/dist/node/handlers/memory.handlers.js +109 -0
- package/dist/node/index.js +646 -0
- package/dist/node/kb-update-pipeline.feature.js +61 -0
- package/dist/node/operations/index.js +199 -0
- package/dist/node/operations/pipeline.js +199 -0
- package/dist/node/presentations.js +120 -0
- package/dist/node/tests/operations.test-spec.js +85 -0
- package/dist/operations/index.d.ts +2 -2
- package/dist/operations/index.d.ts.map +1 -0
- package/dist/operations/index.js +199 -2
- package/dist/operations/pipeline.d.ts +126 -132
- package/dist/operations/pipeline.d.ts.map +1 -1
- package/dist/operations/pipeline.js +189 -172
- package/dist/presentations.d.ts +3 -8
- package/dist/presentations.d.ts.map +1 -1
- package/dist/presentations.js +117 -67
- package/dist/tests/operations.test-spec.d.ts +3 -8
- package/dist/tests/operations.test-spec.d.ts.map +1 -1
- package/dist/tests/operations.test-spec.js +82 -90
- package/package.json +157 -41
- package/tsdown.config.js +1 -2
- package/.turbo/turbo-build$colon$bundle.log +0 -55
- package/dist/docs/kb-update-pipeline.docblock.js.map +0 -1
- package/dist/entities/models.js.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/example.js.map +0 -1
- package/dist/handlers/memory.handlers.js.map +0 -1
- package/dist/kb-update-pipeline.feature.js.map +0 -1
- package/dist/operations/pipeline.js.map +0 -1
- package/dist/presentations.js.map +0 -1
- 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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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.
|
|
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
|
-
".": "./
|
|
9
|
-
"./docs": "./
|
|
10
|
-
"./docs/
|
|
11
|
-
"./
|
|
12
|
-
"./entities
|
|
13
|
-
"./
|
|
14
|
-
"./
|
|
15
|
-
"./
|
|
16
|
-
"./
|
|
17
|
-
"./
|
|
18
|
-
"./
|
|
19
|
-
"./
|
|
20
|
-
"./
|
|
21
|
-
"./
|
|
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:
|
|
28
|
-
"build:bundle": "
|
|
29
|
-
"build:types": "
|
|
30
|
-
"dev": "bun
|
|
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.
|
|
39
|
-
"@contractspec/lib.schema": "1.
|
|
43
|
+
"@contractspec/lib.contracts": "1.58.0",
|
|
44
|
+
"@contractspec/lib.schema": "1.58.0"
|
|
40
45
|
},
|
|
41
46
|
"devDependencies": {
|
|
42
|
-
"@contractspec/tool.
|
|
43
|
-
"
|
|
44
|
-
"
|
|
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
|
-
".":
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"./
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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,55 +0,0 @@
|
|
|
1
|
-
$ tsdown
|
|
2
|
-
[34mℹ[39m tsdown [2mv0.19.0[22m powered by rolldown [2mv1.0.0-beta.59[22m
|
|
3
|
-
[34mℹ[39m config file: [4m/home/runner/work/contractspec/contractspec/packages/examples/kb-update-pipeline/tsdown.config.js[24m
|
|
4
|
-
[34mℹ[39m entry: [34msrc/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[39m
|
|
5
|
-
[34mℹ[39m target: [34mesnext[39m
|
|
6
|
-
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
7
|
-
[34mℹ[39m Build start
|
|
8
|
-
[34mℹ[39m Cleaning 50 files
|
|
9
|
-
[34mℹ[39m [2mdist/[22m[1moperations/pipeline.js[22m [2m4.95 kB[22m [2m│ gzip: 1.37 kB[22m
|
|
10
|
-
[34mℹ[39m [2mdist/[22m[1mevents.js[22m [2m3.69 kB[22m [2m│ gzip: 0.73 kB[22m
|
|
11
|
-
[34mℹ[39m [2mdist/[22m[1mhandlers/memory.handlers.js[22m [2m3.37 kB[22m [2m│ gzip: 1.12 kB[22m
|
|
12
|
-
[34mℹ[39m [2mdist/[22m[1mkb-update-pipeline.feature.js[22m [2m2.35 kB[22m [2m│ gzip: 0.68 kB[22m
|
|
13
|
-
[34mℹ[39m [2mdist/[22m[1mtests/operations.test-spec.js[22m [2m2.13 kB[22m [2m│ gzip: 0.50 kB[22m
|
|
14
|
-
[34mℹ[39m [2mdist/[22m[1mpresentations.js[22m [2m1.90 kB[22m [2m│ gzip: 0.63 kB[22m
|
|
15
|
-
[34mℹ[39m [2mdist/[22m[1mentities/models.js[22m [2m1.81 kB[22m [2m│ gzip: 0.53 kB[22m
|
|
16
|
-
[34mℹ[39m [2mdist/[22m[1mdocs/kb-update-pipeline.docblock.js[22m [2m1.49 kB[22m [2m│ gzip: 0.71 kB[22m
|
|
17
|
-
[34mℹ[39m [2mdist/[22m[1mindex.js[22m [2m1.44 kB[22m [2m│ gzip: 0.42 kB[22m
|
|
18
|
-
[34mℹ[39m [2mdist/[22m[1mexample.js[22m [2m1.05 kB[22m [2m│ gzip: 0.55 kB[22m
|
|
19
|
-
[34mℹ[39m [2mdist/[22m[1moperations/index.js[22m [2m0.31 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
20
|
-
[34mℹ[39m [2mdist/[22m[1mentities/index.js[22m [2m0.25 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
21
|
-
[34mℹ[39m [2mdist/[22m[1mhandlers/index.js[22m [2m0.16 kB[22m [2m│ gzip: 0.10 kB[22m
|
|
22
|
-
[34mℹ[39m [2mdist/[22m[1mdocs/index.js[22m [2m0.04 kB[22m [2m│ gzip: 0.06 kB[22m
|
|
23
|
-
[34mℹ[39m [2mdist/[22mhandlers/memory.handlers.js.map [2m8.13 kB[22m [2m│ gzip: 2.34 kB[22m
|
|
24
|
-
[34mℹ[39m [2mdist/[22moperations/pipeline.js.map [2m7.20 kB[22m [2m│ gzip: 1.81 kB[22m
|
|
25
|
-
[34mℹ[39m [2mdist/[22mevents.js.map [2m5.65 kB[22m [2m│ gzip: 1.04 kB[22m
|
|
26
|
-
[34mℹ[39m [2mdist/[22mtests/operations.test-spec.js.map [2m3.64 kB[22m [2m│ gzip: 0.76 kB[22m
|
|
27
|
-
[34mℹ[39m [2mdist/[22mkb-update-pipeline.feature.js.map [2m3.48 kB[22m [2m│ gzip: 1.02 kB[22m
|
|
28
|
-
[34mℹ[39m [2mdist/[22mpresentations.js.map [2m2.87 kB[22m [2m│ gzip: 0.83 kB[22m
|
|
29
|
-
[34mℹ[39m [2mdist/[22mentities/models.js.map [2m2.68 kB[22m [2m│ gzip: 0.81 kB[22m
|
|
30
|
-
[34mℹ[39m [2mdist/[22mdocs/kb-update-pipeline.docblock.js.map [2m2.00 kB[22m [2m│ gzip: 0.89 kB[22m
|
|
31
|
-
[34mℹ[39m [2mdist/[22mexample.js.map [2m1.51 kB[22m [2m│ gzip: 0.75 kB[22m
|
|
32
|
-
[34mℹ[39m [2mdist/[22mhandlers/memory.handlers.d.ts.map [2m0.92 kB[22m [2m│ gzip: 0.44 kB[22m
|
|
33
|
-
[34mℹ[39m [2mdist/[22mevents.d.ts.map [2m0.81 kB[22m [2m│ gzip: 0.33 kB[22m
|
|
34
|
-
[34mℹ[39m [2mdist/[22moperations/pipeline.d.ts.map [2m0.76 kB[22m [2m│ gzip: 0.33 kB[22m
|
|
35
|
-
[34mℹ[39m [2mdist/[22mentities/models.d.ts.map [2m0.47 kB[22m [2m│ gzip: 0.28 kB[22m
|
|
36
|
-
[34mℹ[39m [2mdist/[22mtests/operations.test-spec.d.ts.map [2m0.23 kB[22m [2m│ gzip: 0.16 kB[22m
|
|
37
|
-
[34mℹ[39m [2mdist/[22mpresentations.d.ts.map [2m0.20 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
38
|
-
[34mℹ[39m [2mdist/[22mkb-update-pipeline.feature.d.ts.map [2m0.18 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
39
|
-
[34mℹ[39m [2mdist/[22mexample.d.ts.map [2m0.14 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
40
|
-
[34mℹ[39m [2mdist/[22m[32m[1moperations/pipeline.d.ts[22m[39m [2m4.37 kB[22m [2m│ gzip: 0.58 kB[22m
|
|
41
|
-
[34mℹ[39m [2mdist/[22m[32m[1mevents.d.ts[22m[39m [2m2.54 kB[22m [2m│ gzip: 0.43 kB[22m
|
|
42
|
-
[34mℹ[39m [2mdist/[22m[32m[1mentities/models.d.ts[22m[39m [2m1.98 kB[22m [2m│ gzip: 0.41 kB[22m
|
|
43
|
-
[34mℹ[39m [2mdist/[22m[32m[1mhandlers/memory.handlers.d.ts[22m[39m [2m1.94 kB[22m [2m│ gzip: 0.64 kB[22m
|
|
44
|
-
[34mℹ[39m [2mdist/[22m[32m[1mindex.d.ts[22m[39m [2m1.48 kB[22m [2m│ gzip: 0.41 kB[22m
|
|
45
|
-
[34mℹ[39m [2mdist/[22m[32m[1mpresentations.d.ts[22m[39m [2m0.52 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
46
|
-
[34mℹ[39m [2mdist/[22m[32m[1mtests/operations.test-spec.d.ts[22m[39m [2m0.47 kB[22m [2m│ gzip: 0.22 kB[22m
|
|
47
|
-
[34mℹ[39m [2mdist/[22m[32m[1mkb-update-pipeline.feature.d.ts[22m[39m [2m0.32 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
48
|
-
[34mℹ[39m [2mdist/[22m[32m[1moperations/index.d.ts[22m[39m [2m0.31 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
49
|
-
[34mℹ[39m [2mdist/[22m[32m[1mexample.d.ts[22m[39m [2m0.25 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
50
|
-
[34mℹ[39m [2mdist/[22m[32m[1mhandlers/index.d.ts[22m[39m [2m0.25 kB[22m [2m│ gzip: 0.10 kB[22m
|
|
51
|
-
[34mℹ[39m [2mdist/[22m[32m[1mentities/index.d.ts[22m[39m [2m0.25 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
52
|
-
[34mℹ[39m [2mdist/[22m[32m[1mdocs/index.d.ts[22m[39m [2m0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
53
|
-
[34mℹ[39m [2mdist/[22m[32m[1mdocs/kb-update-pipeline.docblock.d.ts[22m[39m [2m0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
54
|
-
[34mℹ[39m 45 files, total: 80.50 kB
|
|
55
|
-
[32m✔[39m Build complete in [32m23926ms[39m
|
|
@@ -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"}
|
package/dist/events.js.map
DELETED
|
@@ -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"}
|
package/dist/example.js.map
DELETED
|
@@ -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"}
|