@owlmeans/planning 0.1.18-rc.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/README.md +169 -0
- package/agent-meta/manifest.json +16 -0
- package/agent-meta/skills/planning/SKILL.md +248 -0
- package/build/consts.d.ts +126 -0
- package/build/consts.d.ts.map +1 -0
- package/build/consts.js +129 -0
- package/build/consts.js.map +1 -0
- package/build/entrypoints.d.ts +14 -0
- package/build/entrypoints.d.ts.map +1 -0
- package/build/entrypoints.js +69 -0
- package/build/entrypoints.js.map +1 -0
- package/build/errors.d.ts +94 -0
- package/build/errors.d.ts.map +1 -0
- package/build/errors.js +169 -0
- package/build/errors.js.map +1 -0
- package/build/helpers/apply.d.ts +27 -0
- package/build/helpers/apply.d.ts.map +1 -0
- package/build/helpers/apply.js +162 -0
- package/build/helpers/apply.js.map +1 -0
- package/build/helpers/card.d.ts +17 -0
- package/build/helpers/card.d.ts.map +1 -0
- package/build/helpers/card.js +31 -0
- package/build/helpers/card.js.map +1 -0
- package/build/helpers/changes.d.ts +51 -0
- package/build/helpers/changes.d.ts.map +1 -0
- package/build/helpers/changes.js +277 -0
- package/build/helpers/changes.js.map +1 -0
- package/build/helpers/code.d.ts +24 -0
- package/build/helpers/code.d.ts.map +1 -0
- package/build/helpers/code.js +47 -0
- package/build/helpers/code.js.map +1 -0
- package/build/helpers/index.d.ts +9 -0
- package/build/helpers/index.d.ts.map +1 -0
- package/build/helpers/index.js +9 -0
- package/build/helpers/index.js.map +1 -0
- package/build/helpers/query.d.ts +39 -0
- package/build/helpers/query.d.ts.map +1 -0
- package/build/helpers/query.js +293 -0
- package/build/helpers/query.js.map +1 -0
- package/build/helpers/specification.d.ts +21 -0
- package/build/helpers/specification.d.ts.map +1 -0
- package/build/helpers/specification.js +48 -0
- package/build/helpers/specification.js.map +1 -0
- package/build/helpers/status.d.ts +44 -0
- package/build/helpers/status.d.ts.map +1 -0
- package/build/helpers/status.js +78 -0
- package/build/helpers/status.js.map +1 -0
- package/build/helpers/validate.d.ts +30 -0
- package/build/helpers/validate.d.ts.map +1 -0
- package/build/helpers/validate.js +93 -0
- package/build/helpers/validate.js.map +1 -0
- package/build/i18n/be.json +51 -0
- package/build/i18n/de.json +51 -0
- package/build/i18n/en.json +51 -0
- package/build/i18n/es.json +51 -0
- package/build/i18n/pl.json +51 -0
- package/build/i18n/ru.json +51 -0
- package/build/i18n/uk.json +51 -0
- package/build/i18n.d.ts +2 -0
- package/build/i18n.d.ts.map +1 -0
- package/build/i18n.js +19 -0
- package/build/i18n.js.map +1 -0
- package/build/index.d.ts +10 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +9 -0
- package/build/index.js.map +1 -0
- package/build/models/index.d.ts +7 -0
- package/build/models/index.d.ts.map +1 -0
- package/build/models/index.js +19 -0
- package/build/models/index.js.map +1 -0
- package/build/models/project.d.ts +4 -0
- package/build/models/project.d.ts.map +1 -0
- package/build/models/project.js +17 -0
- package/build/models/project.js.map +1 -0
- package/build/models/specification.d.ts +4 -0
- package/build/models/specification.d.ts.map +1 -0
- package/build/models/specification.js +15 -0
- package/build/models/specification.js.map +1 -0
- package/build/models/workcard.d.ts +14 -0
- package/build/models/workcard.d.ts.map +1 -0
- package/build/models/workcard.js +103 -0
- package/build/models/workcard.js.map +1 -0
- package/build/queue/index.d.ts +25 -0
- package/build/queue/index.d.ts.map +1 -0
- package/build/queue/index.js +14 -0
- package/build/queue/index.js.map +1 -0
- package/build/registry.d.ts +10 -0
- package/build/registry.d.ts.map +1 -0
- package/build/registry.js +75 -0
- package/build/registry.js.map +1 -0
- package/build/schemas.d.ts +56 -0
- package/build/schemas.d.ts.map +1 -0
- package/build/schemas.js +578 -0
- package/build/schemas.js.map +1 -0
- package/build/types.d.ts +785 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/types.js.map +1 -0
- package/package.json +58 -0
- package/src/consts.ts +136 -0
- package/src/entrypoints.ts +127 -0
- package/src/errors.ts +207 -0
- package/src/helpers/apply.ts +183 -0
- package/src/helpers/card.ts +42 -0
- package/src/helpers/changes.ts +333 -0
- package/src/helpers/code.ts +66 -0
- package/src/helpers/index.ts +8 -0
- package/src/helpers/query.ts +345 -0
- package/src/helpers/specification.ts +65 -0
- package/src/helpers/status.ts +117 -0
- package/src/helpers/validate.ts +107 -0
- package/src/i18n/be.json +51 -0
- package/src/i18n/de.json +51 -0
- package/src/i18n/en.json +51 -0
- package/src/i18n/es.json +51 -0
- package/src/i18n/pl.json +51 -0
- package/src/i18n/ru.json +51 -0
- package/src/i18n/uk.json +51 -0
- package/src/i18n.ts +21 -0
- package/src/index.ts +9 -0
- package/src/models/index.ts +21 -0
- package/src/models/project.ts +24 -0
- package/src/models/specification.ts +21 -0
- package/src/models/workcard.ts +138 -0
- package/src/queue/index.ts +31 -0
- package/src/registry.ts +90 -0
- package/src/schemas.ts +654 -0
- package/src/types.ts +837 -0
- package/tests/apply.spec.ts +176 -0
- package/tests/code.spec.ts +40 -0
- package/tests/entrypoints.spec.ts +57 -0
- package/tests/fixtures.ts +124 -0
- package/tests/i18n.spec.ts +30 -0
- package/tests/models.spec.ts +133 -0
- package/tests/query.spec.ts +90 -0
- package/tests/schemas.spec.ts +74 -0
- package/tests/status.spec.ts +75 -0
- package/tests/tsconfig.json +17 -0
- package/tsconfig.json +15 -0
package/src/registry.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { ValidateFunction } from 'ajv'
|
|
2
|
+
import { PLANNING_SCHEMA_VERSION } from './consts.js'
|
|
3
|
+
import { UnknownStatusFlow, UnknownWorkcardType } from './errors.js'
|
|
4
|
+
import { makeAjv } from './helpers/validate.js'
|
|
5
|
+
import type { AnyTypeSchema, PlanningSchemaBundle, PlanningSchemaRegistry, StatusFlowSchema } from './types.js'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Types, flows and the compiled validator of each type's `fields`.
|
|
9
|
+
*
|
|
10
|
+
* It lives in the contract package so a client answers `can()` / `available()` from a loaded bundle
|
|
11
|
+
* with no round trip. A later registration of the same type or flow id replaces the earlier one;
|
|
12
|
+
* `load(bundle)` replaces everything.
|
|
13
|
+
*/
|
|
14
|
+
export const makeSchemaRegistry = (bundle?: Partial<PlanningSchemaBundle>): PlanningSchemaRegistry => {
|
|
15
|
+
const types = new Map<string, AnyTypeSchema>()
|
|
16
|
+
const flows = new Map<string, StatusFlowSchema>()
|
|
17
|
+
const validators = new Map<string, ValidateFunction>()
|
|
18
|
+
let ajv = makeAjv()
|
|
19
|
+
|
|
20
|
+
const registry: PlanningSchemaRegistry = {
|
|
21
|
+
registerType: schema => {
|
|
22
|
+
types.set(schema.type, schema)
|
|
23
|
+
validators.delete(schema.type)
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
registerFlow: flow => {
|
|
27
|
+
flows.set(flow.id, flow)
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
types: () => [...types.values()],
|
|
31
|
+
|
|
32
|
+
type: type => {
|
|
33
|
+
const schema = types.get(type)
|
|
34
|
+
if (schema == null) {
|
|
35
|
+
throw new UnknownWorkcardType(type)
|
|
36
|
+
}
|
|
37
|
+
return schema
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
has: type => types.has(type),
|
|
41
|
+
|
|
42
|
+
flows: () => [...flows.values()],
|
|
43
|
+
|
|
44
|
+
flow: id => {
|
|
45
|
+
const flow = flows.get(id)
|
|
46
|
+
if (flow == null) {
|
|
47
|
+
throw new UnknownStatusFlow(id)
|
|
48
|
+
}
|
|
49
|
+
return flow
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
primaryFlow: type => {
|
|
53
|
+
const primary = registry.type(type).flows[0]
|
|
54
|
+
if (primary == null) {
|
|
55
|
+
throw new UnknownStatusFlow(`${type}:primary`)
|
|
56
|
+
}
|
|
57
|
+
return registry.flow(primary)
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
validator: type => {
|
|
61
|
+
let validate = validators.get(type)
|
|
62
|
+
if (validate == null) {
|
|
63
|
+
validate = ajv.compile(registry.type(type).fields)
|
|
64
|
+
validators.set(type, validate)
|
|
65
|
+
}
|
|
66
|
+
return validate
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
bundle: () => structuredClone({
|
|
70
|
+
version: PLANNING_SCHEMA_VERSION,
|
|
71
|
+
types: [...types.values()],
|
|
72
|
+
flows: [...flows.values()],
|
|
73
|
+
}),
|
|
74
|
+
|
|
75
|
+
load: next => {
|
|
76
|
+
types.clear()
|
|
77
|
+
flows.clear()
|
|
78
|
+
validators.clear()
|
|
79
|
+
// A fresh ajv: a replaced type must not collide with a schema `$id` the old one compiled.
|
|
80
|
+
ajv = makeAjv()
|
|
81
|
+
next.flows.forEach(registry.registerFlow)
|
|
82
|
+
next.types.forEach(registry.registerType)
|
|
83
|
+
},
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
bundle?.flows?.forEach(registry.registerFlow)
|
|
87
|
+
bundle?.types?.forEach(registry.registerType)
|
|
88
|
+
|
|
89
|
+
return registry
|
|
90
|
+
}
|