@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.
Files changed (128) hide show
  1. package/bin/oats.mjs +1 -1
  2. package/docs/capabilities.md +3 -3
  3. package/docs/design/2026-09-23-workspace-module-contracts.md +2 -1
  4. package/docs/desktop-cli-api.md +23 -11
  5. package/docs/first-team.md +1 -1
  6. package/docs/implementation.md +2 -1
  7. package/docs/integrations.md +1 -1
  8. package/docs/knowledge-capability-authoring.md +1 -1
  9. package/docs/knowledge.md +4 -4
  10. package/docs/official-catalog.md +4 -4
  11. package/docs/packages.md +13 -13
  12. package/docs/plans/0.30-close-out.md +24 -2
  13. package/docs/release-lane.md +7 -2
  14. package/docs/release-notes/v0.30.1.md +123 -0
  15. package/docs/release-notes/v0.30.2.md +85 -0
  16. package/docs/souls-and-instances.md +6 -5
  17. package/docs/workspaces.md +7 -2
  18. package/lib/core.mjs +42 -28
  19. package/lib/instance-inspect.mjs +1 -1
  20. package/lib/instance-resolution.mjs +15 -8
  21. package/lib/materialize.mjs +33 -19
  22. package/lib/packages.mjs +1 -1
  23. package/lib/resolve.mjs +1 -1
  24. package/package-catalog.json +3 -3
  25. package/package.json +1 -3
  26. package/skills/oats-getting-started/SKILL.md +2 -2
  27. package/capabilities/oats-authoring/LICENSE +0 -21
  28. package/capabilities/oats-authoring/oats-package.json +0 -11
  29. package/capabilities/oats-authoring/oats.json +0 -12
  30. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
  31. package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
  32. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
  33. package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
  34. package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1672
  35. package/capabilities/oats-aweb/injects/aweb.md +0 -47
  36. package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -365
  37. package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
  38. package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
  39. package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
  40. package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
  41. package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
  42. package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
  43. package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
  44. package/capabilities/oats-aweb/oats.json +0 -201
  45. package/capabilities/oats-aweb/skills/LICENSE +0 -21
  46. package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
  47. package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
  48. package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
  49. package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
  50. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
  51. package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
  52. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -286
  53. package/capabilities/oats-code-review/injects/reviewer.md +0 -26
  54. package/capabilities/oats-code-review/oats.json +0 -16
  55. package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +0 -66
  56. package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +0 -30
  57. package/capabilities/oats-code-review/skills/security-review/SKILL.md +0 -56
  58. package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +0 -34
  59. package/capabilities/oats-developer/injects/developer.md +0 -38
  60. package/capabilities/oats-developer/oats.json +0 -17
  61. package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +0 -43
  62. package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +0 -47
  63. package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +0 -65
  64. package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +0 -37
  65. package/capabilities/oats-developer/skills/worktrees/SKILL.md +0 -36
  66. package/capabilities/oats-engineering-expert/injects/expert.md +0 -37
  67. package/capabilities/oats-engineering-expert/oats.json +0 -17
  68. package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +0 -37
  69. package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +0 -52
  70. package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +0 -50
  71. package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +0 -53
  72. package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +0 -49
  73. package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
  74. package/capabilities/oats-jira/injects/jira.md +0 -10
  75. package/capabilities/oats-jira/oats.json +0 -22
  76. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
  77. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
  78. package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
  79. package/capabilities/oats-linear/injects/linear.md +0 -8
  80. package/capabilities/oats-linear/oats.json +0 -24
  81. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
  82. package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
  83. package/capabilities/oats-okf/bin/oats-okf.mjs +0 -213
  84. package/capabilities/oats-okf/injects/okf.md +0 -42
  85. package/capabilities/oats-okf/lib/binding-wire.mjs +0 -380
  86. package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
  87. package/capabilities/oats-okf/lib/config.mjs +0 -124
  88. package/capabilities/oats-okf/lib/consult.mjs +0 -518
  89. package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
  90. package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
  91. package/capabilities/oats-okf/lib/inspection.mjs +0 -138
  92. package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
  93. package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
  94. package/capabilities/oats-okf/lib/io.mjs +0 -118
  95. package/capabilities/oats-okf/lib/migration.mjs +0 -137
  96. package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
  97. package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
  98. package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
  99. package/capabilities/oats-okf/lib/sources.mjs +0 -438
  100. package/capabilities/oats-okf/lib/stores.mjs +0 -473
  101. package/capabilities/oats-okf/lib/worker.mjs +0 -486
  102. package/capabilities/oats-okf/oats.json +0 -151
  103. package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
  104. package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
  105. package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
  106. package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
  107. package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
  108. package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
  109. package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
  110. package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
  111. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
  112. package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
  113. package/capabilities/oats-okf-harvest/oats.json +0 -26
  114. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
  115. package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
  116. package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
  117. package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  118. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
  119. package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
  120. package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
  121. package/capabilities/oats-okf-maintenance/oats.json +0 -21
  122. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
  123. package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
  124. package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
  125. package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  126. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -134
  127. package/capabilities/oats-workspace-experts/injects/oats-experts.md +0 -26
  128. 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` |