@awebai/oats 0.30.0 → 0.30.2
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/bin/oats.mjs +1 -1
- package/docs/capabilities.md +3 -3
- package/docs/design/2026-09-23-workspace-module-contracts.md +2 -1
- package/docs/desktop-cli-api.md +23 -11
- package/docs/first-team.md +1 -1
- package/docs/implementation.md +2 -1
- package/docs/integrations.md +1 -1
- package/docs/knowledge-capability-authoring.md +1 -1
- package/docs/knowledge.md +4 -4
- package/docs/official-catalog.md +4 -4
- package/docs/packages.md +13 -13
- package/docs/plans/0.30-close-out.md +24 -2
- package/docs/release-lane.md +7 -2
- package/docs/release-notes/v0.30.1.md +123 -0
- package/docs/release-notes/v0.30.2.md +85 -0
- package/docs/souls-and-instances.md +6 -5
- package/docs/workspaces.md +7 -2
- package/lib/core.mjs +42 -28
- package/lib/instance-inspect.mjs +1 -1
- package/lib/instance-resolution.mjs +15 -8
- package/lib/materialize.mjs +33 -19
- package/lib/packages.mjs +1 -1
- package/lib/resolve.mjs +1 -1
- package/package-catalog.json +3 -3
- package/package.json +1 -3
- package/skills/oats-getting-started/SKILL.md +2 -2
- package/capabilities/oats-authoring/LICENSE +0 -21
- package/capabilities/oats-authoring/oats-package.json +0 -11
- package/capabilities/oats-authoring/oats.json +0 -12
- package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
- package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
- package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
- package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
- package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1672
- package/capabilities/oats-aweb/injects/aweb.md +0 -47
- package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -365
- package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
- package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
- package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
- package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
- package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
- package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
- package/capabilities/oats-aweb/oats.json +0 -201
- package/capabilities/oats-aweb/skills/LICENSE +0 -21
- package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
- package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
- package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
- package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
- package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
- package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
- package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -286
- package/capabilities/oats-code-review/injects/reviewer.md +0 -26
- package/capabilities/oats-code-review/oats.json +0 -16
- package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +0 -66
- package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +0 -30
- package/capabilities/oats-code-review/skills/security-review/SKILL.md +0 -56
- package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +0 -34
- package/capabilities/oats-developer/injects/developer.md +0 -38
- package/capabilities/oats-developer/oats.json +0 -17
- package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +0 -43
- package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +0 -47
- package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +0 -65
- package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +0 -37
- package/capabilities/oats-developer/skills/worktrees/SKILL.md +0 -36
- package/capabilities/oats-engineering-expert/injects/expert.md +0 -37
- package/capabilities/oats-engineering-expert/oats.json +0 -17
- package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +0 -37
- package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +0 -52
- package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +0 -50
- package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +0 -53
- package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +0 -49
- package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
- package/capabilities/oats-jira/injects/jira.md +0 -10
- package/capabilities/oats-jira/oats.json +0 -22
- package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
- package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
- package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
- package/capabilities/oats-linear/injects/linear.md +0 -8
- package/capabilities/oats-linear/oats.json +0 -24
- package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
- package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
- package/capabilities/oats-okf/bin/oats-okf.mjs +0 -213
- package/capabilities/oats-okf/injects/okf.md +0 -42
- package/capabilities/oats-okf/lib/binding-wire.mjs +0 -380
- package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
- package/capabilities/oats-okf/lib/config.mjs +0 -124
- package/capabilities/oats-okf/lib/consult.mjs +0 -518
- package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
- package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
- package/capabilities/oats-okf/lib/inspection.mjs +0 -138
- package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
- package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-okf/lib/io.mjs +0 -118
- package/capabilities/oats-okf/lib/migration.mjs +0 -137
- package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
- package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
- package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
- package/capabilities/oats-okf/lib/sources.mjs +0 -438
- package/capabilities/oats-okf/lib/stores.mjs +0 -473
- package/capabilities/oats-okf/lib/worker.mjs +0 -486
- package/capabilities/oats-okf/oats.json +0 -151
- package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
- package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
- package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
- package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
- package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
- package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
- package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
- package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
- package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
- package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
- package/capabilities/oats-okf-harvest/oats.json +0 -26
- package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
- package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
- package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
- package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
- package/capabilities/oats-okf-maintenance/oats.json +0 -21
- package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
- package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -134
- package/capabilities/oats-workspace-experts/injects/oats-experts.md +0 -26
- package/capabilities/oats-workspace-experts/oats.json +0 -9
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://oats.dev/schemas/okf-base.schema.json",
|
|
4
|
-
"type": "object",
|
|
5
|
-
"required": [
|
|
6
|
-
"version",
|
|
7
|
-
"id",
|
|
8
|
-
"nodes"
|
|
9
|
-
],
|
|
10
|
-
"properties": {
|
|
11
|
-
"version": {
|
|
12
|
-
"const": 1
|
|
13
|
-
},
|
|
14
|
-
"id": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
17
|
-
},
|
|
18
|
-
"nodes": {
|
|
19
|
-
"type": "object",
|
|
20
|
-
"minProperties": 1,
|
|
21
|
-
"propertyNames": {
|
|
22
|
-
"type": "string",
|
|
23
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
24
|
-
},
|
|
25
|
-
"additionalProperties": {
|
|
26
|
-
"type": "object",
|
|
27
|
-
"required": [
|
|
28
|
-
"path",
|
|
29
|
-
"owner"
|
|
30
|
-
],
|
|
31
|
-
"properties": {
|
|
32
|
-
"path": {
|
|
33
|
-
"type": "string",
|
|
34
|
-
"minLength": 1
|
|
35
|
-
},
|
|
36
|
-
"owner": {
|
|
37
|
-
"type": "string",
|
|
38
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
"additionalProperties": false
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
"additionalProperties": false
|
|
46
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://oats.dev/schemas/okf-bindings.schema.json",
|
|
4
|
-
"type": "object",
|
|
5
|
-
"required": [
|
|
6
|
-
"version",
|
|
7
|
-
"stateDir",
|
|
8
|
-
"bases"
|
|
9
|
-
],
|
|
10
|
-
"properties": {
|
|
11
|
-
"version": {
|
|
12
|
-
"const": 1
|
|
13
|
-
},
|
|
14
|
-
"stateDir": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"minLength": 1
|
|
17
|
-
},
|
|
18
|
-
"cron": {
|
|
19
|
-
"type": "string",
|
|
20
|
-
"default": "*/15 * * * *",
|
|
21
|
-
"minLength": 1,
|
|
22
|
-
"pattern": "\\S"
|
|
23
|
-
},
|
|
24
|
-
"tz": {
|
|
25
|
-
"type": "string",
|
|
26
|
-
"default": "UTC",
|
|
27
|
-
"minLength": 1,
|
|
28
|
-
"pattern": "\\S"
|
|
29
|
-
},
|
|
30
|
-
"bases": {
|
|
31
|
-
"type": "object",
|
|
32
|
-
"minProperties": 1,
|
|
33
|
-
"propertyNames": {
|
|
34
|
-
"type": "string",
|
|
35
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
36
|
-
},
|
|
37
|
-
"additionalProperties": {
|
|
38
|
-
"oneOf": [
|
|
39
|
-
{
|
|
40
|
-
"type": "object",
|
|
41
|
-
"required": [
|
|
42
|
-
"id",
|
|
43
|
-
"kind",
|
|
44
|
-
"path"
|
|
45
|
-
],
|
|
46
|
-
"properties": {
|
|
47
|
-
"id": {
|
|
48
|
-
"type": "string",
|
|
49
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
50
|
-
},
|
|
51
|
-
"kind": {
|
|
52
|
-
"const": "directory"
|
|
53
|
-
},
|
|
54
|
-
"path": {
|
|
55
|
-
"type": "string",
|
|
56
|
-
"minLength": 1
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
"additionalProperties": false
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"type": "object",
|
|
63
|
-
"required": [
|
|
64
|
-
"id",
|
|
65
|
-
"kind",
|
|
66
|
-
"repository",
|
|
67
|
-
"root",
|
|
68
|
-
"acceptedBranch",
|
|
69
|
-
"pr"
|
|
70
|
-
],
|
|
71
|
-
"properties": {
|
|
72
|
-
"id": {
|
|
73
|
-
"type": "string",
|
|
74
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
75
|
-
},
|
|
76
|
-
"kind": {
|
|
77
|
-
"const": "git"
|
|
78
|
-
},
|
|
79
|
-
"repository": {
|
|
80
|
-
"type": "string",
|
|
81
|
-
"minLength": 1
|
|
82
|
-
},
|
|
83
|
-
"root": {
|
|
84
|
-
"type": "string",
|
|
85
|
-
"minLength": 1
|
|
86
|
-
},
|
|
87
|
-
"acceptedBranch": {
|
|
88
|
-
"type": "string",
|
|
89
|
-
"minLength": 1
|
|
90
|
-
},
|
|
91
|
-
"pr": {
|
|
92
|
-
"type": "object",
|
|
93
|
-
"required": [
|
|
94
|
-
"repository"
|
|
95
|
-
],
|
|
96
|
-
"properties": {
|
|
97
|
-
"repository": {
|
|
98
|
-
"type": "string",
|
|
99
|
-
"pattern": "^[\\w.-]+/[\\w.-]+$"
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
"additionalProperties": false
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
"additionalProperties": false
|
|
106
|
-
}
|
|
107
|
-
]
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
"additionalProperties": false
|
|
112
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://oats.dev/schemas/okf-portable-declaration.schema.json",
|
|
4
|
-
"title": "OATS OKF portable knowledge declaration",
|
|
5
|
-
"$defs": {
|
|
6
|
-
"identifier": {
|
|
7
|
-
"type": "string",
|
|
8
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
9
|
-
},
|
|
10
|
-
"directory": {
|
|
11
|
-
"type": "object",
|
|
12
|
-
"required": ["id", "kind", "path"],
|
|
13
|
-
"properties": {
|
|
14
|
-
"id": {"$ref": "#/$defs/identifier"},
|
|
15
|
-
"kind": {"const": "directory"},
|
|
16
|
-
"path": {"type": "string", "pattern": "^path:/"}
|
|
17
|
-
},
|
|
18
|
-
"additionalProperties": false
|
|
19
|
-
},
|
|
20
|
-
"git": {
|
|
21
|
-
"type": "object",
|
|
22
|
-
"required": ["id", "kind", "repository", "root", "acceptedBranch", "pr"],
|
|
23
|
-
"properties": {
|
|
24
|
-
"id": {"$ref": "#/$defs/identifier"},
|
|
25
|
-
"kind": {"const": "git"},
|
|
26
|
-
"repository": {"type": "string", "pattern": "^(?!(?:https://[^/]*@|ssh://[^/@]*:[^/@]*@))(?:(?:https|ssh)://|git@)[^\\s?#]+$"},
|
|
27
|
-
"root": {"type": "string", "minLength": 1},
|
|
28
|
-
"acceptedBranch": {"type": "string", "minLength": 1},
|
|
29
|
-
"pr": {
|
|
30
|
-
"type": "object",
|
|
31
|
-
"required": ["repository"],
|
|
32
|
-
"properties": {"repository": {"type": "string", "pattern": "^[\\w.-]+/[\\w.-]+$"}},
|
|
33
|
-
"additionalProperties": false
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"additionalProperties": false
|
|
37
|
-
},
|
|
38
|
-
"locator": {"oneOf": [{"$ref": "#/$defs/directory"}, {"$ref": "#/$defs/git"}]},
|
|
39
|
-
"store": {
|
|
40
|
-
"oneOf": [
|
|
41
|
-
{"type": "object", "required": ["fixed"], "properties": {"fixed": {"$ref": "#/$defs/locator"}}, "additionalProperties": false},
|
|
42
|
-
{"type": "object", "required": ["default"], "properties": {"default": {"$ref": "#/$defs/locator"}}, "additionalProperties": false},
|
|
43
|
-
{"type": "object", "required": ["inherit"], "properties": {"inherit": {"type": "string", "minLength": 1}}, "additionalProperties": false}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
"type": "object",
|
|
48
|
-
"required": ["contract", "version", "payload"],
|
|
49
|
-
"properties": {
|
|
50
|
-
"contract": {"const": "oats.okf.locations"},
|
|
51
|
-
"version": {"const": 1},
|
|
52
|
-
"payload": {
|
|
53
|
-
"type": "object",
|
|
54
|
-
"required": ["owner", "stores", "reads", "owns"],
|
|
55
|
-
"properties": {
|
|
56
|
-
"owner": {"$ref": "#/$defs/identifier"},
|
|
57
|
-
"stores": {
|
|
58
|
-
"type": "object",
|
|
59
|
-
"propertyNames": {"$ref": "#/$defs/identifier"},
|
|
60
|
-
"additionalProperties": {"$ref": "#/$defs/store"}
|
|
61
|
-
},
|
|
62
|
-
"reads": {
|
|
63
|
-
"type": "array",
|
|
64
|
-
"uniqueItems": true,
|
|
65
|
-
"items": {
|
|
66
|
-
"type": "object",
|
|
67
|
-
"required": ["store", "node"],
|
|
68
|
-
"properties": {"store": {"$ref": "#/$defs/identifier"}, "node": {"$ref": "#/$defs/identifier"}},
|
|
69
|
-
"additionalProperties": false
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
"owns": {
|
|
73
|
-
"type": "array",
|
|
74
|
-
"uniqueItems": true,
|
|
75
|
-
"items": {
|
|
76
|
-
"type": "object",
|
|
77
|
-
"required": ["node"],
|
|
78
|
-
"properties": {"node": {"$ref": "#/$defs/identifier"}, "destination": {"$ref": "#/$defs/identifier"}},
|
|
79
|
-
"additionalProperties": false
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
"additionalProperties": false
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
"additionalProperties": false
|
|
87
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://oats.dev/schemas/okf-portable-payload.schema.json",
|
|
4
|
-
"title": "OATS OKF effective portable binding payload",
|
|
5
|
-
"$defs": {
|
|
6
|
-
"identifier": {
|
|
7
|
-
"type": "string",
|
|
8
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
9
|
-
},
|
|
10
|
-
"directory": {
|
|
11
|
-
"type": "object",
|
|
12
|
-
"required": ["id", "kind", "path"],
|
|
13
|
-
"properties": {
|
|
14
|
-
"id": {"$ref": "#/$defs/identifier"},
|
|
15
|
-
"kind": {"const": "directory"},
|
|
16
|
-
"path": {"type": "string", "pattern": "^/"}
|
|
17
|
-
},
|
|
18
|
-
"additionalProperties": false
|
|
19
|
-
},
|
|
20
|
-
"git": {
|
|
21
|
-
"type": "object",
|
|
22
|
-
"required": ["id", "kind", "repository", "root", "acceptedBranch", "pr"],
|
|
23
|
-
"properties": {
|
|
24
|
-
"id": {"$ref": "#/$defs/identifier"},
|
|
25
|
-
"kind": {"const": "git"},
|
|
26
|
-
"repository": {"type": "string", "pattern": "^(?!(?:https://[^/]*@|ssh://[^/@]*:[^/@]*@))(?:(?:https|ssh)://|git@)[^\\s?#]+$"},
|
|
27
|
-
"root": {"type": "string", "minLength": 1},
|
|
28
|
-
"acceptedBranch": {"type": "string", "minLength": 1},
|
|
29
|
-
"pr": {
|
|
30
|
-
"type": "object",
|
|
31
|
-
"required": ["repository"],
|
|
32
|
-
"properties": {"repository": {"type": "string", "pattern": "^[\\w.-]+/[\\w.-]+$"}},
|
|
33
|
-
"additionalProperties": false
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"additionalProperties": false
|
|
37
|
-
},
|
|
38
|
-
"store": {"oneOf": [{"$ref": "#/$defs/directory"}, {"$ref": "#/$defs/git"}]},
|
|
39
|
-
"read": {
|
|
40
|
-
"type": "object",
|
|
41
|
-
"required": ["store", "node"],
|
|
42
|
-
"properties": {"store": {"$ref": "#/$defs/identifier"}, "node": {"$ref": "#/$defs/identifier"}},
|
|
43
|
-
"additionalProperties": false
|
|
44
|
-
},
|
|
45
|
-
"own": {
|
|
46
|
-
"type": "object",
|
|
47
|
-
"required": ["store", "node", "steward"],
|
|
48
|
-
"properties": {"store": {"$ref": "#/$defs/identifier"}, "node": {"$ref": "#/$defs/identifier"}, "steward": {"$ref": "#/$defs/identifier"}},
|
|
49
|
-
"additionalProperties": false
|
|
50
|
-
},
|
|
51
|
-
"reference": {
|
|
52
|
-
"type": "string",
|
|
53
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)/)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}/(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
"type": "object",
|
|
57
|
-
"required": ["owner", "stores", "reads", "owns", "runtime", "execution"],
|
|
58
|
-
"properties": {
|
|
59
|
-
"owner": {"$ref": "#/$defs/identifier"},
|
|
60
|
-
"stores": {
|
|
61
|
-
"type": "object",
|
|
62
|
-
"minProperties": 1,
|
|
63
|
-
"propertyNames": {"$ref": "#/$defs/identifier"},
|
|
64
|
-
"additionalProperties": {"$ref": "#/$defs/store"}
|
|
65
|
-
},
|
|
66
|
-
"reads": {"type": "array", "uniqueItems": true, "items": {"$ref": "#/$defs/read"}},
|
|
67
|
-
"owns": {"type": "array", "uniqueItems": true, "items": {"$ref": "#/$defs/own"}},
|
|
68
|
-
"runtime": {
|
|
69
|
-
"type": "object",
|
|
70
|
-
"required": ["descriptorFile", "bindings", "declaration"],
|
|
71
|
-
"properties": {
|
|
72
|
-
"descriptorFile": {"type": "string", "pattern": "^/"},
|
|
73
|
-
"bindings": {
|
|
74
|
-
"type": "object",
|
|
75
|
-
"required": ["version", "stateDir", "bases"],
|
|
76
|
-
"properties": {
|
|
77
|
-
"version": {"const": 1},
|
|
78
|
-
"stateDir": {"type": "string", "pattern": "^/"},
|
|
79
|
-
"bases": {
|
|
80
|
-
"type": "object",
|
|
81
|
-
"minProperties": 1,
|
|
82
|
-
"propertyNames": {"$ref": "#/$defs/identifier"},
|
|
83
|
-
"additionalProperties": {"$ref": "#/$defs/store"}
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
"additionalProperties": false
|
|
87
|
-
},
|
|
88
|
-
"declaration": {
|
|
89
|
-
"type": "object",
|
|
90
|
-
"required": ["version", "owner", "reads", "owns"],
|
|
91
|
-
"properties": {
|
|
92
|
-
"version": {"const": 1},
|
|
93
|
-
"owner": {"$ref": "#/$defs/identifier"},
|
|
94
|
-
"reads": {"type": "array", "uniqueItems": true, "items": {"$ref": "#/$defs/reference"}},
|
|
95
|
-
"owns": {"type": "array", "uniqueItems": true, "items": {"$ref": "#/$defs/reference"}}
|
|
96
|
-
},
|
|
97
|
-
"additionalProperties": false
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
"additionalProperties": false
|
|
101
|
-
},
|
|
102
|
-
"execution": {
|
|
103
|
-
"type": "object",
|
|
104
|
-
"required": ["runtime", "model"],
|
|
105
|
-
"properties": {
|
|
106
|
-
"runtime": {"oneOf": [{"const": "pi"}, {"const": "claude"}, {"const": "codex"}]},
|
|
107
|
-
"model": {"oneOf": [{"type": "null"}, {"type": "string", "minLength": 1}]}
|
|
108
|
-
},
|
|
109
|
-
"additionalProperties": false
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
"additionalProperties": false
|
|
113
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://oats.dev/schemas/okf-soul.schema.json",
|
|
4
|
-
"type": "object",
|
|
5
|
-
"required": [
|
|
6
|
-
"version",
|
|
7
|
-
"owner",
|
|
8
|
-
"owns",
|
|
9
|
-
"reads"
|
|
10
|
-
],
|
|
11
|
-
"properties": {
|
|
12
|
-
"version": {
|
|
13
|
-
"const": 1
|
|
14
|
-
},
|
|
15
|
-
"owner": {
|
|
16
|
-
"type": "string",
|
|
17
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
18
|
-
},
|
|
19
|
-
"owns": {
|
|
20
|
-
"type": "array",
|
|
21
|
-
"items": {
|
|
22
|
-
"type": "string",
|
|
23
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)/)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}/(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
24
|
-
},
|
|
25
|
-
"uniqueItems": true
|
|
26
|
-
},
|
|
27
|
-
"reads": {
|
|
28
|
-
"type": "array",
|
|
29
|
-
"items": {
|
|
30
|
-
"type": "string",
|
|
31
|
-
"pattern": "^(?!(?:constructor|__proto__|prototype|toString|valueOf)/)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}/(?!(?:constructor|__proto__|prototype|toString|valueOf)$)[a-zA-Z0-9][a-zA-Z0-9._-]{0,95}$"
|
|
32
|
-
},
|
|
33
|
-
"uniqueItems": true
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"additionalProperties": false
|
|
37
|
-
}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: okf-consultation
|
|
3
|
-
description: >-
|
|
4
|
-
Consulting your soul's knowledge with the `oats okf` CLI: reading its
|
|
5
|
-
external OKF bases remotely at the accepted commit (index, cat, ls, links,
|
|
6
|
-
search, bases) with no local copy, then citing what you relied on. Use when
|
|
7
|
-
starting a task or resuming after compaction, when looking up a prior
|
|
8
|
-
decision, lesson or concept, when asked "what do we know about X" or to
|
|
9
|
-
"check the knowledge base", before re-deriving a design decision, when a
|
|
10
|
-
question touches your domain, or when an `oats okf` receipt says STALE or a
|
|
11
|
-
command errors. What to write in your own notes is the okf-instance-knowledge
|
|
12
|
-
skill.
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Consulting your knowledge with `oats okf`
|
|
16
|
-
|
|
17
|
-
Your soul's accumulated judgment — decisions and their rationale, lessons,
|
|
18
|
-
rejected alternatives, limits — lives outside the soul, in external OKF
|
|
19
|
-
**bases**. You read it remotely; nothing is copied into your home. Consulting
|
|
20
|
-
it before you act is how you avoid re-deciding what was already decided.
|
|
21
|
-
|
|
22
|
-
## The model
|
|
23
|
-
|
|
24
|
-
- **Base / alias.** Each bound base has an alias (`oats okf bases` lists
|
|
25
|
-
them). A base is one OKF bundle and one link namespace.
|
|
26
|
-
- **Node.** A subdirectory of a base with its own `index.md`. Your soul
|
|
27
|
-
**owns** some nodes (you are responsible for them) and **reads** others
|
|
28
|
-
(starting context). Neither is an access list: every bound base is readable.
|
|
29
|
-
- **Accepted commit.** `oats okf` serves only a base's accepted state: the
|
|
30
|
-
accepted branch of a Git base, the in-place files of a directory base. An
|
|
31
|
-
open PR is not accepted knowledge until it is merged.
|
|
32
|
-
- **Host cache, no local copy.** A Git base is read from one host-wide cache
|
|
33
|
-
that fetches file contents on first read. Your home has no `./knowledge/`
|
|
34
|
-
and no view directory. A `./knowledge/` left by okf 2.x is stale; ignore it.
|
|
35
|
-
- **Receipts.** Every answer ends with `— alias@<short-oid> (fetched <age>)`.
|
|
36
|
-
With `--json`, the result carries `receipt: {base, kind, commit|digest,
|
|
37
|
-
fetchedAt, stale}`.
|
|
38
|
-
|
|
39
|
-
Run every command from your instance home.
|
|
40
|
-
|
|
41
|
-
## At the start of every task, and after compaction
|
|
42
|
-
|
|
43
|
-
1. `oats okf index` prints your owned then read nodes' indexes, each headed
|
|
44
|
-
`## alias/node (owns|reads)`.
|
|
45
|
-
2. Choose the entries relevant to *this* task by their one-line descriptions.
|
|
46
|
-
3. `oats okf cat --base ALIAS /node/path.md` for each of those, and follow
|
|
47
|
-
their links only as far as the task needs (see Navigating).
|
|
48
|
-
4. Write down in STATE.md which concepts shaped your plan, with their
|
|
49
|
-
citations.
|
|
50
|
-
|
|
51
|
-
Do not skip this because the task looks small: prior decisions are cheapest
|
|
52
|
-
to find before you have written the code that contradicts them.
|
|
53
|
-
|
|
54
|
-
## Consult again while working
|
|
55
|
-
|
|
56
|
-
The start-of-task read is not enough. Consult again:
|
|
57
|
-
|
|
58
|
-
- **Before a design decision.** Search for the decision's subject, and read
|
|
59
|
-
any prior decision on it before choosing.
|
|
60
|
-
- **Before re-deriving something.** If you are about to work out why
|
|
61
|
-
something is the way it is, search first; the rationale may be recorded.
|
|
62
|
-
- **When a question touches your domain**, including a teammate's question.
|
|
63
|
-
- **Before saying "we decided…" or "we tried…"**: cite it, or don't claim it.
|
|
64
|
-
- **When something surprises you.** A lesson may already explain it.
|
|
65
|
-
|
|
66
|
-
## Commands
|
|
67
|
-
|
|
68
|
-
| Command | What it answers |
|
|
69
|
-
| --- | --- |
|
|
70
|
-
| `oats okf bases [--fresh]` | aliases, accepted commit, freshness, validity, your owns/reads |
|
|
71
|
-
| `oats okf index [--base A] [NODE \| A/NODE]` | one node's `index.md`; no args: all your nodes; `--base A` alone: the base root index |
|
|
72
|
-
| `oats okf cat --base A PATH [--from P]` | one Markdown file, in full |
|
|
73
|
-
| `oats okf ls --base A [DIR]` | directory entries, each concept's `type` / `title` / `description` |
|
|
74
|
-
| `oats okf links --base A PATH` | the file's outgoing links, resolved, `ok` / `MISSING` / `REFUSED` / `external` |
|
|
75
|
-
| `oats okf search [--base A \| --all] [--node N] [--regex] [--case-sensitive] TEXT` | matching lines `{base, path, line, snippet}` |
|
|
76
|
-
|
|
77
|
-
All take `--json`. `read` (the okf 2.x spelling of `cat`) is removed in 4.0.0
|
|
78
|
-
(`E_REMOVED`): use `cat`.
|
|
79
|
-
|
|
80
|
-
## Navigating
|
|
81
|
-
|
|
82
|
-
Paths resolve like OKF links, **from the base root, not the filesystem**:
|
|
83
|
-
|
|
84
|
-
- `/node/decisions/x.md` is base-root absolute (the usual form in indexes'
|
|
85
|
-
absolute links and in citations);
|
|
86
|
-
- a relative link (`../lessons/y.md`, `decisions/x.md`) is relative to the file
|
|
87
|
-
it appeared in: pass that file as `--from`;
|
|
88
|
-
- a bare `node/x.md` without `--from` resolves from the root.
|
|
89
|
-
|
|
90
|
-
Worked example (a lesson linked from a decision):
|
|
91
|
-
|
|
92
|
-
```sh
|
|
93
|
-
oats okf index expert
|
|
94
|
-
oats okf cat --base project /expert/decisions/retry-policy.md
|
|
95
|
-
oats okf links --base project /expert/decisions/retry-policy.md
|
|
96
|
-
oats okf cat --base project ../lessons/storm.md --from /expert/decisions/retry-policy.md
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
`links` shows every target already resolved, so you can `cat` the resolved
|
|
100
|
-
path directly. `ls` is for choosing what to read from its descriptions, not
|
|
101
|
-
for reading everything.
|
|
102
|
-
|
|
103
|
-
## Searching
|
|
104
|
-
|
|
105
|
-
`oats okf search TEXT` searches your nodes' bases (fixed string,
|
|
106
|
-
case-insensitive, Markdown only), capped at 50 hits with "and N more". Narrow
|
|
107
|
-
with `--node`, a longer phrase or `--base`; widen with `--all`. Search finds
|
|
108
|
-
words, not meaning: when it finds nothing, try a synonym, then navigate from
|
|
109
|
-
the index. A hit is a pointer: `cat` the concept before relying on it.
|
|
110
|
-
|
|
111
|
-
## Citing
|
|
112
|
-
|
|
113
|
-
Cite what you relied on as `alias/node/concept.md@<short-oid>`, using the oid
|
|
114
|
-
from the receipt line (a directory base cites `alias@dir:<digest>`). Cite in
|
|
115
|
-
STATE.md, notes/, PR descriptions and answers, so a reader knows which
|
|
116
|
-
accepted state you saw.
|
|
117
|
-
|
|
118
|
-
## Freshness
|
|
119
|
-
|
|
120
|
-
Reads use the cached accepted commit while it is younger than the
|
|
121
|
-
`consult-max-age` setting (default 300 s); after that the accepted branch is
|
|
122
|
-
refetched first. `--fresh` refetches now (for example right after a PR
|
|
123
|
-
merged). If a fetch fails, the last fetched accepted commit is still served,
|
|
124
|
-
marked `stale: true` / `STALE:` with the reason: say so when it matters. With
|
|
125
|
-
nothing cached and no network, the command fails with `E_BASE_UNAVAILABLE`:
|
|
126
|
-
report it, and do not answer from memory or from an old `./knowledge/`.
|
|
127
|
-
|
|
128
|
-
## Gotchas
|
|
129
|
-
|
|
130
|
-
- Links resolve from the base root. `/node/x.md` is never a filesystem path,
|
|
131
|
-
and filesystem paths, `..` escapes, URLs, hidden paths and symlinks are
|
|
132
|
-
refused (`E_PATH`).
|
|
133
|
-
- Never bulk-`cat` a whole node or loop `cat` over `ls` output. Index first,
|
|
134
|
-
then follow the few relevant links.
|
|
135
|
-
- Don't edit knowledge. The write path is notes/ → the knowledge harvester →
|
|
136
|
-
a reviewed PR (or a directory publication). Write insights to notes/ (the
|
|
137
|
-
okf-instance-knowledge skill), not into a base.
|
|
138
|
-
- `oats okf refresh` and `read` are gone (`E_REMOVED`): every read already sees the
|
|
139
|
-
accepted state.
|
|
140
|
-
- `cat` reads `.md` files only (`E_NOT_MARKDOWN` otherwise); `E_NOT_FOUND`
|
|
141
|
-
lists the nearest directory's entries to try instead.
|
|
142
|
-
|
|
143
|
-
Read [references/consult.md](references/consult.md) for more search examples,
|
|
144
|
-
the error table and freshness edge cases.
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# okf-consultation — reference detail
|
|
2
|
-
|
|
3
|
-
The okf-consultation skill's detail. Read this when navigating links, when a search is noisy or empty, when a
|
|
4
|
-
receipt says `STALE`, or when a command errors. Run every command from your
|
|
5
|
-
instance home (`oats okf …` resolves your registered source there).
|
|
6
|
-
|
|
7
|
-
## Navigation, worked example
|
|
8
|
-
|
|
9
|
-
Task: "change how retries back off". Your soul owns `project/expert`.
|
|
10
|
-
|
|
11
|
-
```sh
|
|
12
|
-
oats okf index # ## project/expert (owns) … ## project/peer (reads)
|
|
13
|
-
# * [Retry policy](decisions/retry-policy.md) - Why retries back off exponentially.
|
|
14
|
-
oats okf cat --base project /expert/decisions/retry-policy.md
|
|
15
|
-
# … "superseded the fixed delay; see [the incident](../lessons/fixed-delay-storm.md)"
|
|
16
|
-
oats okf links --base project /expert/decisions/retry-policy.md
|
|
17
|
-
# ok /expert/lessons/fixed-delay-storm.md (../lessons/fixed-delay-storm.md)
|
|
18
|
-
# MISSING /expert/decisions/jitter.md
|
|
19
|
-
oats okf cat --base project ../lessons/fixed-delay-storm.md \
|
|
20
|
-
--from /expert/decisions/retry-policy.md
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
- `index` with a node name (`oats okf index expert` or `project/expert`) prints
|
|
24
|
-
one index; `--base A` alone prints the base's root `index.md`.
|
|
25
|
-
- A link in a concept is relative to **that concept's directory**: pass the
|
|
26
|
-
concept as `--from`, or use `links` to see every target already resolved.
|
|
27
|
-
- `/node/x.md` is always from the base root; a bare `node/x.md` without
|
|
28
|
-
`--from` is also from the root.
|
|
29
|
-
- `ls --base A /node/decisions` shows each concept's `type`, `title` and
|
|
30
|
-
`description` — use it to pick what to `cat`, not to read everything.
|
|
31
|
-
- `MISSING` in `links` is a dangling link (allowed by OKF; not an error).
|
|
32
|
-
`REFUSED` is a link that would leave the base or is malformed.
|
|
33
|
-
|
|
34
|
-
## Search
|
|
35
|
-
|
|
36
|
-
```sh
|
|
37
|
-
oats okf search "backoff" # your nodes' bases, case-insensitive
|
|
38
|
-
oats okf search --node expert "jitter" # one of your nodes
|
|
39
|
-
oats okf search --base project --node peer "rate limit"
|
|
40
|
-
oats okf search --all "idempotency" # every bound base
|
|
41
|
-
oats okf search --regex "retr(y|ies)" # opt-in regex
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
- Fixed string, case-insensitive by default (`--case-sensitive` to change);
|
|
45
|
-
`--regex` is extended regex in Git bases, JavaScript RegExp in directory ones.
|
|
46
|
-
- Only `.md` files inside the base root; results are `{base, path, line,
|
|
47
|
-
snippet}`, capped at 50 with "and N more" — narrow with `--node` or a longer
|
|
48
|
-
phrase rather than paging.
|
|
49
|
-
- Search finds words, not meaning: when it's empty, try a synonym, then
|
|
50
|
-
navigate from the index. A hit is a pointer; `cat` the concept before
|
|
51
|
-
relying on it.
|
|
52
|
-
- Git bases search with `git grep` at the accepted commit (the first search of
|
|
53
|
-
a node fetches its blobs in one batch); directory bases walk the files in
|
|
54
|
-
place, bounded to 20000 files.
|
|
55
|
-
|
|
56
|
-
## Citing
|
|
57
|
-
|
|
58
|
-
Cite what you relied on as `alias/node/concept.md@<short-oid>`, the oid from
|
|
59
|
-
the receipt line (`— project@1a2b3c4d5e6f (fetched 2m ago)`). A directory base
|
|
60
|
-
cites its digest (`project@dir:9f8e…`). Cite in notes/, PR descriptions and
|
|
61
|
-
answers so a reader can see which accepted state you saw.
|
|
62
|
-
|
|
63
|
-
## Freshness
|
|
64
|
-
|
|
65
|
-
- Reads use the host cache's accepted commit if it was fetched within
|
|
66
|
-
`consult-max-age` seconds (setting, default 300); older, the accepted branch
|
|
67
|
-
is fetched first. `--fresh` fetches now. Neither ever selects another
|
|
68
|
-
branch or commit: only the accepted one is served.
|
|
69
|
-
- Fetch failed (offline, auth, timeout): the last fetched accepted commit is
|
|
70
|
-
served with `stale: true` and the reason in the receipt (`STALE:` in text).
|
|
71
|
-
Say so if it matters to your answer; retry later with `--fresh`.
|
|
72
|
-
- No cached commit and no network → `E_BASE_UNAVAILABLE`: report it, don't
|
|
73
|
-
guess from memory or from an old `./knowledge/`.
|
|
74
|
-
- Merged a PR a minute ago? `--fresh` sees it once it is on the accepted branch.
|
|
75
|
-
|
|
76
|
-
## Errors
|
|
77
|
-
|
|
78
|
-
| Code | Meaning / what to do |
|
|
79
|
-
| --- | --- |
|
|
80
|
-
| `E_BASE_UNKNOWN` | alias not bound; the message lists the bound aliases (`oats okf bases`) |
|
|
81
|
-
| `E_NOT_FOUND` | no such file at the accepted commit; the message lists the nearest directory |
|
|
82
|
-
| `E_NOT_MARKDOWN` | `cat` reads `.md` concepts only; use `ls` for a directory |
|
|
83
|
-
| `E_PATH` | escapes the base root, filesystem path, URL, hidden path, symlink or submodule |
|
|
84
|
-
| `E_RECOVERY` | a directory-base publication is pending; retry after it completes |
|
|
85
|
-
| `E_BASE_UNAVAILABLE` | the base can't be read and nothing is cached; report it |
|
|
86
|
-
| `E_REMOVED` | `refresh` and `read` no longer exist; use `index` / `cat` |
|