ctxr-cli 0.7.0 → 0.9.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 +303 -22
- package/dist/adapters/types.d.ts +0 -5
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/commands/adapters-generate.d.ts.map +1 -1
- package/dist/commands/adapters-generate.js +2 -3
- package/dist/commands/adapters-generate.js.map +1 -1
- package/dist/commands/context-gather.d.ts +22 -0
- package/dist/commands/context-gather.d.ts.map +1 -0
- package/dist/commands/context-gather.js +36 -0
- package/dist/commands/context-gather.js.map +1 -0
- package/dist/commands/graph-query.d.ts.map +1 -1
- package/dist/commands/graph-query.js +6 -8
- package/dist/commands/graph-query.js.map +1 -1
- package/dist/commands/ingest.d.ts +22 -9
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +86 -24
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +21 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/source-check.d.ts.map +1 -1
- package/dist/commands/source-check.js +27 -9
- package/dist/commands/source-check.js.map +1 -1
- package/dist/commands/source-stamp.d.ts +6 -5
- package/dist/commands/source-stamp.d.ts.map +1 -1
- package/dist/commands/source-stamp.js +8 -7
- package/dist/commands/source-stamp.js.map +1 -1
- package/dist/config/defaults.d.ts +103 -4
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +76 -4
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/render.d.ts +11 -0
- package/dist/config/render.d.ts.map +1 -1
- package/dist/config/render.js +85 -3
- package/dist/config/render.js.map +1 -1
- package/dist/config/schema.d.ts +50 -30
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +151 -62
- package/dist/config/schema.js.map +1 -1
- package/dist/core/agents-doc.d.ts.map +1 -1
- package/dist/core/agents-doc.js +4 -1
- package/dist/core/agents-doc.js.map +1 -1
- package/dist/core/checks/harness-portability-checks.d.ts +1 -1
- package/dist/core/checks/harness-portability-checks.d.ts.map +1 -1
- package/dist/core/checks/harness-portability-checks.js +2 -3
- package/dist/core/checks/harness-portability-checks.js.map +1 -1
- package/dist/core/checks/manifest.d.ts.map +1 -1
- package/dist/core/checks/manifest.js +2 -0
- package/dist/core/checks/manifest.js.map +1 -1
- package/dist/core/checks/organize-checks.d.ts +11 -1
- package/dist/core/checks/organize-checks.d.ts.map +1 -1
- package/dist/core/checks/organize-checks.js +42 -12
- package/dist/core/checks/organize-checks.js.map +1 -1
- package/dist/core/checks/retrieval-checks.d.ts +9 -0
- package/dist/core/checks/retrieval-checks.d.ts.map +1 -0
- package/dist/core/checks/retrieval-checks.js +30 -0
- package/dist/core/checks/retrieval-checks.js.map +1 -0
- package/dist/core/content/canonicalize.d.ts +10 -0
- package/dist/core/content/canonicalize.d.ts.map +1 -1
- package/dist/core/content/canonicalize.js +12 -0
- package/dist/core/content/canonicalize.js.map +1 -1
- package/dist/core/errors.d.ts +19 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +53 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/fs/prefix.d.ts +13 -0
- package/dist/core/fs/prefix.d.ts.map +1 -0
- package/dist/core/fs/prefix.js +22 -0
- package/dist/core/fs/prefix.js.map +1 -0
- package/dist/core/graph/persist.d.ts +13 -0
- package/dist/core/graph/persist.d.ts.map +1 -1
- package/dist/core/graph/persist.js +24 -0
- package/dist/core/graph/persist.js.map +1 -1
- package/dist/core/hooks.d.ts +3 -12
- package/dist/core/hooks.d.ts.map +1 -1
- package/dist/core/hooks.js +24 -20
- package/dist/core/hooks.js.map +1 -1
- package/dist/core/ingest/capture-hash.d.ts +16 -0
- package/dist/core/ingest/capture-hash.d.ts.map +1 -0
- package/dist/core/ingest/capture-hash.js +34 -0
- package/dist/core/ingest/capture-hash.js.map +1 -0
- package/dist/core/ingest/identity.d.ts +7 -1
- package/dist/core/ingest/identity.d.ts.map +1 -1
- package/dist/core/ingest/identity.js +16 -1
- package/dist/core/ingest/identity.js.map +1 -1
- package/dist/core/ingest/model.d.ts +17 -2
- package/dist/core/ingest/model.d.ts.map +1 -1
- package/dist/core/ingest/model.js +5 -0
- package/dist/core/ingest/model.js.map +1 -1
- package/dist/core/migrations/config-defaults-as-the-convention.d.ts +21 -0
- package/dist/core/migrations/config-defaults-as-the-convention.d.ts.map +1 -0
- package/dist/core/migrations/config-defaults-as-the-convention.js +54 -0
- package/dist/core/migrations/config-defaults-as-the-convention.js.map +1 -0
- package/dist/core/migrations/registry.d.ts.map +1 -1
- package/dist/core/migrations/registry.js +4 -0
- package/dist/core/migrations/registry.js.map +1 -1
- package/dist/core/migrations/retain-captures-as-provenance.d.ts +22 -0
- package/dist/core/migrations/retain-captures-as-provenance.d.ts.map +1 -0
- package/dist/core/migrations/retain-captures-as-provenance.js +133 -0
- package/dist/core/migrations/retain-captures-as-provenance.js.map +1 -0
- package/dist/core/notes/list.d.ts +20 -0
- package/dist/core/notes/list.d.ts.map +1 -1
- package/dist/core/notes/list.js +27 -6
- package/dist/core/notes/list.js.map +1 -1
- package/dist/core/records.d.ts +7 -0
- package/dist/core/records.d.ts.map +1 -1
- package/dist/core/records.js +12 -2
- package/dist/core/records.js.map +1 -1
- package/dist/core/retrieval/pass.d.ts +66 -0
- package/dist/core/retrieval/pass.d.ts.map +1 -0
- package/dist/core/retrieval/pass.js +171 -0
- package/dist/core/retrieval/pass.js.map +1 -0
- package/dist/core/write-lifecycle/path-gate.d.ts +2 -2
- package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -1
- package/dist/core/write-lifecycle/path-gate.js +9 -10
- package/dist/core/write-lifecycle/path-gate.js.map +1 -1
- package/dist/run.d.ts +0 -5
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +38 -3
- package/dist/run.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +13 -5
- package/templates/agents/capture-and-ingest.md +27 -8
- package/templates/agents/retrieval-leg-routing.md +34 -8
- package/templates/hooks/_resolve-ctxr.sh +37 -0
- package/templates/hooks/claude-code-write-gate.sh +34 -6
- package/templates/hooks/pre-commit.sh +15 -8
- package/templates/skills/ctxr-connection-finding.md +7 -5
- package/templates/skills/ctxr-ingest-orchestration.md +15 -9
- package/templates/skills/ctxr-publish.md +7 -8
package/dist/config/schema.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { isStrictlyUnderPrefix } from '../core/fs/prefix.js';
|
|
3
|
+
import { SHIPPED_DEFAULTS } from './defaults.js';
|
|
3
4
|
/**
|
|
4
5
|
* store-lifecycle spec: schema_version versions STORE STATE (config shape +
|
|
5
6
|
* note frontmatter conventions) — a monotonic integer independent of the npm
|
|
@@ -36,7 +37,24 @@ import { DEFAULT_ARCHIVE_DESTINATION, DEFAULT_PUBLISH_PATH, DEFAULT_VENDORED_SKI
|
|
|
36
37
|
* keys until `ctxr migrate` drops them, exactly as `identity` did when
|
|
37
38
|
* remove-agent-identity retired it.
|
|
38
39
|
*/
|
|
39
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Bumped to 9 by the capture-tier change (retain-captures-as-provenance,
|
|
42
|
+
* retain-captures-as-provenance): `ingest.capture_root` is added and
|
|
43
|
+
* `ingest.inbox_path`'s shipped default moves inside it. IngestSchema accepts
|
|
44
|
+
* a config with no `capture_root` so an unmigrated store still loads —
|
|
45
|
+
* `ctxr migrate` has to be able to read the file it is about to rewrite —
|
|
46
|
+
* and skips the nesting rule for exactly that case.
|
|
47
|
+
*/
|
|
48
|
+
export const SUPPORTED_SCHEMA_VERSION = 10;
|
|
49
|
+
/** The version at which the capture tier became part of the store's shape, and its nesting rule enforceable. */
|
|
50
|
+
export const CAPTURE_TIER_SCHEMA_VERSION = 9;
|
|
51
|
+
/**
|
|
52
|
+
* Bumped to 10 by config-defaults-as-the-convention: every convention key now
|
|
53
|
+
* carries its shipped default here, and a written config omits what it agrees
|
|
54
|
+
* with. Nothing about the shape got stricter — the bump exists so the pruning
|
|
55
|
+
* migration has a `schema_version <` predicate to decide it still has work,
|
|
56
|
+
* the same way every migration in this repo does.
|
|
57
|
+
*/
|
|
40
58
|
export const TaxonomyLayerSchema = z.object({
|
|
41
59
|
name: z.string().min(1),
|
|
42
60
|
path: z.string().min(1),
|
|
@@ -48,7 +66,7 @@ const TaxonomySchema = z.object({
|
|
|
48
66
|
layers: z.array(TaxonomyLayerSchema),
|
|
49
67
|
});
|
|
50
68
|
const DerivedSchema = z.object({
|
|
51
|
-
paths: z.array(z.string()),
|
|
69
|
+
paths: z.array(z.string()).default([...SHIPPED_DEFAULTS.derived.paths]),
|
|
52
70
|
});
|
|
53
71
|
/**
|
|
54
72
|
* graph-context-document spec: the graph document's knobs. Clusters are
|
|
@@ -58,16 +76,30 @@ const DerivedSchema = z.object({
|
|
|
58
76
|
* orphan lint check.
|
|
59
77
|
*/
|
|
60
78
|
const GraphSettingsSchema = z.object({
|
|
61
|
-
cluster_depth: z.number().int().positive().default(
|
|
62
|
-
hub_top: z.number().int().positive().default(
|
|
63
|
-
bridge_top: z.number().int().positive().default(
|
|
64
|
-
orphan_exempt_clusters: z.array(z.string()).default([]),
|
|
79
|
+
cluster_depth: z.number().int().positive().default(SHIPPED_DEFAULTS.retrieval.graph.cluster_depth),
|
|
80
|
+
hub_top: z.number().int().positive().default(SHIPPED_DEFAULTS.retrieval.graph.hub_top),
|
|
81
|
+
bridge_top: z.number().int().positive().default(SHIPPED_DEFAULTS.retrieval.graph.bridge_top),
|
|
82
|
+
orphan_exempt_clusters: z.array(z.string()).default([...SHIPPED_DEFAULTS.retrieval.graph.orphan_exempt_clusters]),
|
|
65
83
|
});
|
|
66
84
|
const RetrievalSchema = z.object({
|
|
67
|
-
exclude_paths: z.array(z.string()),
|
|
85
|
+
exclude_paths: z.array(z.string()).default([...SHIPPED_DEFAULTS.retrieval.exclude_paths]),
|
|
86
|
+
/**
|
|
87
|
+
* compose-the-retrieval-pass spec: prefixes that remain fully retrievable —
|
|
88
|
+
* present in the catalog, present in the graph, returned by every leg — but
|
|
89
|
+
* ordered after everything else. Distinct from `exclude_paths`, which removes
|
|
90
|
+
* a path from retrieval entirely; declaring one path both ways fails doctor
|
|
91
|
+
* rather than being resolved by precedence.
|
|
92
|
+
*
|
|
93
|
+
* The shipped default demotes nothing. `init` seeds it from the resolved
|
|
94
|
+
* taxonomy's archive destination instead, which is why that seeded value is
|
|
95
|
+
* written out rather than omitted (config-defaults-as-the-convention D2).
|
|
96
|
+
*/
|
|
97
|
+
demote_paths: z.array(z.string()).default([...SHIPPED_DEFAULTS.retrieval.demote_paths]),
|
|
98
|
+
/** compose-the-retrieval-pass spec: the pass's note cap; truncation is reported, never silent. */
|
|
99
|
+
gather_max_notes: z.number().int().positive().default(SHIPPED_DEFAULTS.retrieval.gather_max_notes),
|
|
68
100
|
/** graph-context-document spec: relation names whose section headings type the wikilinks under them; empty = no typed edges. */
|
|
69
|
-
relations: z.array(z.string().min(1)).default([]),
|
|
70
|
-
graph: GraphSettingsSchema.default({
|
|
101
|
+
relations: z.array(z.string().min(1)).default([...SHIPPED_DEFAULTS.retrieval.relations]),
|
|
102
|
+
graph: GraphSettingsSchema.default({ ...SHIPPED_DEFAULTS.retrieval.graph, orphan_exempt_clusters: [] }),
|
|
71
103
|
});
|
|
72
104
|
/**
|
|
73
105
|
* Recorded once, at init, from whatever branch `git init` actually created
|
|
@@ -79,17 +111,17 @@ const GitSchema = z.object({
|
|
|
79
111
|
default_branch: z.string().min(1),
|
|
80
112
|
});
|
|
81
113
|
const SessionSchema = z.object({
|
|
82
|
-
branch_prefix: z.string().min(1),
|
|
83
|
-
worktrees_path: z.string().min(1),
|
|
114
|
+
branch_prefix: z.string().min(1).default(SHIPPED_DEFAULTS.session.branch_prefix),
|
|
115
|
+
worktrees_path: z.string().min(1).default(SHIPPED_DEFAULTS.session.worktrees_path),
|
|
84
116
|
});
|
|
85
117
|
/** session-capture-command spec (D5): declaring any path here turns the sanctioned-location gate on; empty (the default) leaves every in-store path accepted. */
|
|
86
118
|
const WriteLifecycleSchema = z.object({
|
|
87
|
-
diff_size_ceiling_lines: z.number().int().positive(),
|
|
88
|
-
writable_paths: z.array(z.string()).default([]),
|
|
119
|
+
diff_size_ceiling_lines: z.number().int().positive().default(SHIPPED_DEFAULTS.write_lifecycle.diff_size_ceiling_lines),
|
|
120
|
+
writable_paths: z.array(z.string()).default([...SHIPPED_DEFAULTS.write_lifecycle.writable_paths]),
|
|
89
121
|
});
|
|
90
122
|
const CatalogSchema = z.object({
|
|
91
|
-
path: z.string().min(1),
|
|
92
|
-
section_max_bytes: z.number().int().positive(),
|
|
123
|
+
path: z.string().min(1).default(SHIPPED_DEFAULTS.catalog.path),
|
|
124
|
+
section_max_bytes: z.number().int().positive().default(SHIPPED_DEFAULTS.catalog.section_max_bytes),
|
|
93
125
|
});
|
|
94
126
|
/**
|
|
95
127
|
* publish spec (design.md): unlike every other tool-owned path field, this one is
|
|
@@ -99,7 +131,7 @@ const CatalogSchema = z.object({
|
|
|
99
131
|
* store. `init` still writes it explicitly for a freshly generated config.
|
|
100
132
|
*/
|
|
101
133
|
const PublishSchema = z.object({
|
|
102
|
-
path: z.string().min(1).default(
|
|
134
|
+
path: z.string().min(1).default(SHIPPED_DEFAULTS.publish.path),
|
|
103
135
|
});
|
|
104
136
|
/**
|
|
105
137
|
* harness-portability spec (vendored-craft-skills): which vendored
|
|
@@ -108,15 +140,24 @@ const PublishSchema = z.object({
|
|
|
108
140
|
* out entirely — same schema-optional-with-default shape as `publish`.
|
|
109
141
|
*/
|
|
110
142
|
const SkillsSchema = z.object({
|
|
111
|
-
vendored: z.array(z.string()).default([...
|
|
143
|
+
vendored: z.array(z.string()).default([...SHIPPED_DEFAULTS.skills.vendored]),
|
|
112
144
|
});
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
145
|
+
/**
|
|
146
|
+
* context-ingest spec: the capture tier. `capture_root` is the retained
|
|
147
|
+
* ledger's root and `inbox_path` is the not-yet-ingested state inside it.
|
|
148
|
+
*
|
|
149
|
+
* Both paths carry the shipped convention as a schema default, so a config
|
|
150
|
+
* written before schema 9 still parses — `ctxr migrate` has to be able to
|
|
151
|
+
* read the file it is about to rewrite. The rule that the inbox sits inside
|
|
152
|
+
* the capture root lives on StoreConfigSchema instead of here, since it is a
|
|
153
|
+
* schema-9 invariant and only that scope can see the version.
|
|
154
|
+
*/
|
|
155
|
+
const IngestSchema = z
|
|
156
|
+
.object({
|
|
157
|
+
inbox_path: z.string().min(1).default(SHIPPED_DEFAULTS.ingest.inbox_path),
|
|
158
|
+
capture_root: z.string().min(1).default(SHIPPED_DEFAULTS.ingest.capture_root),
|
|
116
159
|
/** store-primitives-from-migration-audit spec (D2): query parameters stripped when canonicalizing a URL source identity, in addition to the shipped defaults. */
|
|
117
|
-
tracking_params: z
|
|
118
|
-
.array(z.string())
|
|
119
|
-
.default(['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid']),
|
|
160
|
+
tracking_params: z.array(z.string()).default([...SHIPPED_DEFAULTS.ingest.tracking_params]),
|
|
120
161
|
});
|
|
121
162
|
/**
|
|
122
163
|
* context-organize spec: archive's destination — independent of taxonomy
|
|
@@ -139,7 +180,7 @@ const OrganizeSchema = z
|
|
|
139
180
|
archive_destination: z.string().min(1).optional(),
|
|
140
181
|
archive_path: z.string().min(1).optional(),
|
|
141
182
|
/** store-primitives-from-migration-audit spec (D4): the grace period, in days, before a stale rollup is reported — bounds noise from a backlink edited moments ago. */
|
|
142
|
-
rollup_stale_days: z.number().int().nonnegative().default(
|
|
183
|
+
rollup_stale_days: z.number().int().nonnegative().default(SHIPPED_DEFAULTS.organize.rollup_stale_days),
|
|
143
184
|
/**
|
|
144
185
|
* context-organize spec: the store's standing current-state document
|
|
145
186
|
* (priorities, active builds, back burner, sunset candidates, debt).
|
|
@@ -150,15 +191,39 @@ const OrganizeSchema = z
|
|
|
150
191
|
*/
|
|
151
192
|
mission_path: z.string().min(1).optional(),
|
|
152
193
|
})
|
|
153
|
-
.transform((value) =>
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
194
|
+
.transform((value, ctx) => {
|
|
195
|
+
/**
|
|
196
|
+
* config-defaults-as-the-convention (D2): derived, not conventional — a
|
|
197
|
+
* shipped profile supplies this from the taxonomy at init. A constant
|
|
198
|
+
* default here would give every PARA store `archive/` while its own
|
|
199
|
+
* taxonomy declares `archives/`, which is the defect
|
|
200
|
+
* archive-destination-from-taxonomy exists to prevent. Absent under both
|
|
201
|
+
* spellings, the key is reported rather than guessed.
|
|
202
|
+
*/
|
|
203
|
+
const archiveDestination = value.archive_destination ?? value.archive_path;
|
|
204
|
+
if (archiveDestination === undefined) {
|
|
205
|
+
ctx.addIssue({
|
|
206
|
+
code: 'custom',
|
|
207
|
+
path: ['archive_destination'],
|
|
208
|
+
message: 'organize.archive_destination is missing. It is resolved from the store taxonomy at init rather than defaulted, so declare it explicitly (or run `ctxr migrate` if this store predates the key).',
|
|
209
|
+
});
|
|
210
|
+
return z.NEVER;
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
archive_destination: archiveDestination,
|
|
214
|
+
rollup_stale_days: value.rollup_stale_days,
|
|
215
|
+
// Spread, not a plain key, so the output type keeps `mission_path`
|
|
216
|
+
// genuinely optional (`key?: string`) rather than always-present-but-
|
|
217
|
+
// possibly-undefined — the latter would force every `StoreConfig`
|
|
218
|
+
// object literal in the codebase to add the key just to compile.
|
|
219
|
+
//
|
|
220
|
+
// config-defaults-as-the-convention (D2): an opt-in key, deliberately
|
|
221
|
+
// NOT defaulted. Call sites branch on its presence to decide whether the
|
|
222
|
+
// store has a mission mechanism at all, so defaulting it would switch
|
|
223
|
+
// that on for every store predating it, pointing at a document none has.
|
|
224
|
+
...(value.mission_path !== undefined ? { mission_path: value.mission_path } : {}),
|
|
225
|
+
};
|
|
226
|
+
});
|
|
162
227
|
/**
|
|
163
228
|
* harness-portability spec: the portable skill pack and the guidance
|
|
164
229
|
* documents (a shipped baseline convention file, the operator's own
|
|
@@ -193,24 +258,25 @@ const HarnessSchema = z
|
|
|
193
258
|
* compose-store-guidance-documents design.md D6: a size ceiling on
|
|
194
259
|
* AGENTS.md's inlined "Store conventions" section, guarding against
|
|
195
260
|
* unbounded growth now that its content is inlined rather than indexed
|
|
196
|
-
* (inline-conventions-and-mission).
|
|
197
|
-
*
|
|
198
|
-
* doctor check that reads it
|
|
199
|
-
*
|
|
261
|
+
* (inline-conventions-and-mission). A convention key like any other
|
|
262
|
+
* since config-defaults-as-the-convention: the default is declared here
|
|
263
|
+
* rather than applied by the one doctor check that reads it, so the check
|
|
264
|
+
* and the schema cannot disagree about the budget.
|
|
200
265
|
*/
|
|
201
|
-
convention_max_bytes: z.number().int().positive().
|
|
266
|
+
convention_max_bytes: z.number().int().positive().default(SHIPPED_DEFAULTS.harness.convention_max_bytes),
|
|
202
267
|
})
|
|
203
|
-
.transform((value
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const
|
|
268
|
+
.transform((value) => {
|
|
269
|
+
/**
|
|
270
|
+
* config-defaults-as-the-convention: the pre-rename spellings are still
|
|
271
|
+
* read first, so an unmigrated store keeps the path it declared. What
|
|
272
|
+
* changed is the end of the chain — absent under BOTH spellings used to
|
|
273
|
+
* raise a custom "run `ctxr migrate`" error, but an unmigrated store HAS
|
|
274
|
+
* `procedures_path` and never reached it. What it actually rejected was a
|
|
275
|
+
* config declining to name a skills path, which is now a config that
|
|
276
|
+
* accepts the shipped one.
|
|
277
|
+
*/
|
|
278
|
+
const skillsPath = value.skills_path ?? value.procedures_path ?? SHIPPED_DEFAULTS.harness.skills_path;
|
|
279
|
+
const guidancePath = value.guidance_path ?? value.conventions_path ?? SHIPPED_DEFAULTS.harness.guidance_path;
|
|
214
280
|
// Spread, not a plain key, so the output type keeps `convention_max_bytes`
|
|
215
281
|
// genuinely optional (`key?: number`) rather than always-present-but-possibly-undefined
|
|
216
282
|
// (`key: number | undefined`) — the latter would require every existing
|
|
@@ -218,7 +284,7 @@ const HarnessSchema = z
|
|
|
218
284
|
return {
|
|
219
285
|
skills_path: skillsPath,
|
|
220
286
|
guidance_path: guidancePath,
|
|
221
|
-
|
|
287
|
+
convention_max_bytes: value.convention_max_bytes,
|
|
222
288
|
};
|
|
223
289
|
});
|
|
224
290
|
/**
|
|
@@ -253,18 +319,41 @@ export const StoreConfigSchema = z
|
|
|
253
319
|
.object({
|
|
254
320
|
schema_version: z.number().int().positive(),
|
|
255
321
|
taxonomy: TaxonomySchema,
|
|
256
|
-
|
|
257
|
-
|
|
322
|
+
// `prefault`, not `default`: it substitutes an INPUT, so the block's own
|
|
323
|
+
// per-key defaults fill it in. `.default({})` would demand a fully
|
|
324
|
+
// resolved output object here and duplicate every value a second time.
|
|
325
|
+
derived: DerivedSchema.prefault({}),
|
|
326
|
+
retrieval: RetrievalSchema.prefault({}),
|
|
258
327
|
git: GitSchema,
|
|
259
|
-
session: SessionSchema,
|
|
260
|
-
write_lifecycle: WriteLifecycleSchema,
|
|
261
|
-
catalog: CatalogSchema,
|
|
262
|
-
publish: PublishSchema.
|
|
263
|
-
skills: SkillsSchema.
|
|
264
|
-
ingest: IngestSchema,
|
|
328
|
+
session: SessionSchema.prefault({}),
|
|
329
|
+
write_lifecycle: WriteLifecycleSchema.prefault({}),
|
|
330
|
+
catalog: CatalogSchema.prefault({}),
|
|
331
|
+
publish: PublishSchema.prefault({}),
|
|
332
|
+
skills: SkillsSchema.prefault({}),
|
|
333
|
+
ingest: IngestSchema.prefault({}),
|
|
265
334
|
organize: OrganizeSchema,
|
|
266
|
-
harness: HarnessSchema,
|
|
267
|
-
adapters: AdaptersFieldSchema,
|
|
335
|
+
harness: HarnessSchema.prefault({}),
|
|
336
|
+
adapters: AdaptersFieldSchema.default([...SHIPPED_DEFAULTS.adapters]),
|
|
268
337
|
})
|
|
269
|
-
.passthrough()
|
|
338
|
+
.passthrough()
|
|
339
|
+
.superRefine((value, ctx) => {
|
|
340
|
+
/**
|
|
341
|
+
* retain-captures-as-provenance (D7): one prefix has to serve both the
|
|
342
|
+
* retrieval exclusion and the write-path gate, which only holds while the
|
|
343
|
+
* inbox is strictly inside the capture root. Gated on the version that
|
|
344
|
+
* introduced the capture tier — a store still on an older schema has a
|
|
345
|
+
* `capture_root` this schema defaulted in, not one it declared, and
|
|
346
|
+
* migrations of earlier versions must be able to write their configs
|
|
347
|
+
* back untouched.
|
|
348
|
+
*/
|
|
349
|
+
if (value.schema_version < CAPTURE_TIER_SCHEMA_VERSION)
|
|
350
|
+
return;
|
|
351
|
+
if (!isStrictlyUnderPrefix(value.ingest.inbox_path, value.ingest.capture_root)) {
|
|
352
|
+
ctx.addIssue({
|
|
353
|
+
code: 'custom',
|
|
354
|
+
path: ['ingest', 'inbox_path'],
|
|
355
|
+
message: `"${value.ingest.inbox_path}" must be a directory inside capture_root ("${value.ingest.capture_root}")`,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
});
|
|
270
359
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-doc.d.ts","sourceRoot":"","sources":["../../src/core/agents-doc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAsD,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiBvG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,8BAA4C,CAAC;AAgCrF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAOrE;AAED,mHAAmH;AACnH,wBAAsB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAEnH;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,8BAAyC,CAAC;AAE9E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"agents-doc.d.ts","sourceRoot":"","sources":["../../src/core/agents-doc.ts"],"names":[],"mappings":"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"}
|
package/dist/core/agents-doc.js
CHANGED
|
@@ -78,7 +78,10 @@ export async function buildAgentsLegRoutingSection(root, config) {
|
|
|
78
78
|
*/
|
|
79
79
|
export const AGENTS_MD_CAPTURE_FENCE = htmlCommentFence('capture-and-ingest');
|
|
80
80
|
export function renderCaptureSection(config) {
|
|
81
|
-
return agentsTemplate('capture-and-ingest')
|
|
81
|
+
return agentsTemplate('capture-and-ingest')
|
|
82
|
+
.replaceAll('__INBOX_PATH__', config.ingest.inbox_path)
|
|
83
|
+
.replaceAll('__CAPTURE_ROOT__', config.ingest.capture_root)
|
|
84
|
+
.split('\n');
|
|
82
85
|
}
|
|
83
86
|
export async function buildAgentsCaptureSection(root, config) {
|
|
84
87
|
return upsertFencedRegionInFile(agentsMdPath(root), AGENTS_MD_CAPTURE_FENCE, renderCaptureSection(config));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-doc.js","sourceRoot":"","sources":["../../src/core/agents-doc.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agents-doc.js","sourceRoot":"","sources":["../../src/core/agents-doc.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* (inline-conventions-and-mission) removed the natural size bound an index
|
|
5
5
|
* provided — an unbounded custom part could make AGENTS.md unwieldy. A
|
|
6
6
|
* configured ceiling (`harness.convention_max_bytes`, defaulting to
|
|
7
|
-
*
|
|
7
|
+
* the schema's shipped default) fails doctor loud rather than silently
|
|
8
8
|
* truncating content the inlining exists to surface.
|
|
9
9
|
*/
|
|
10
10
|
export declare const conventionsSectionSizeCheck: import("./types.js").CheckDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-portability-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"harness-portability-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,sCAuBtC,CAAC;AAEH,eAAO,MAAM,0BAA0B,wCAAgC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { DEFAULT_CONVENTION_MAX_BYTES } from '../../config/defaults.js';
|
|
2
1
|
import { AGENTS_MD_CONVENTIONS_FENCE, agentsMdPath } from '../agents-doc.js';
|
|
3
2
|
import { readFencedRegionFromFile } from '../fs/fenced-region.js';
|
|
4
3
|
import { defineCheck } from './types.js';
|
|
@@ -8,7 +7,7 @@ import { defineCheck } from './types.js';
|
|
|
8
7
|
* (inline-conventions-and-mission) removed the natural size bound an index
|
|
9
8
|
* provided — an unbounded custom part could make AGENTS.md unwieldy. A
|
|
10
9
|
* configured ceiling (`harness.convention_max_bytes`, defaulting to
|
|
11
|
-
*
|
|
10
|
+
* the schema's shipped default) fails doctor loud rather than silently
|
|
12
11
|
* truncating content the inlining exists to surface.
|
|
13
12
|
*/
|
|
14
13
|
export const conventionsSectionSizeCheck = defineCheck({
|
|
@@ -23,7 +22,7 @@ export const conventionsSectionSizeCheck = defineCheck({
|
|
|
23
22
|
return { status: 'skip', skipReason: 'AGENTS.md has not been generated yet — run `ctxr update`', findings: [] };
|
|
24
23
|
}
|
|
25
24
|
const size = Buffer.byteLength(region.join('\n'), 'utf8');
|
|
26
|
-
const budget = ctx.config.harness.convention_max_bytes
|
|
25
|
+
const budget = ctx.config.harness.convention_max_bytes;
|
|
27
26
|
if (size <= budget)
|
|
28
27
|
return { status: 'pass', findings: [] };
|
|
29
28
|
const finding = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-portability-checks.js","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"harness-portability-checks.js","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC;IACrD,EAAE,EAAE,8CAA8C;IAClD,KAAK,EAAE,2FAA2F;IAClG,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACxG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,0DAA0D,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACvD,IAAI,IAAI,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAE5D,MAAM,OAAO,GAAY;YACvB,IAAI,EAAE,uDAAuD;YAC7D,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,8CAA8C,IAAI,8CAA8C,MAAM,+EAA+E;YAC9L,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC1B,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,2BAA2B,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,eAAe,EAO5C,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { CATALOG_CHECKS } from './catalog-checks.js';
|
|
|
2
2
|
import { HARNESS_PORTABILITY_CHECKS } from './harness-portability-checks.js';
|
|
3
3
|
import { INTEGRITY_CHECKS } from './integrity-checks.js';
|
|
4
4
|
import { ORGANIZE_CHECKS } from './organize-checks.js';
|
|
5
|
+
import { RETRIEVAL_CHECKS } from './retrieval-checks.js';
|
|
5
6
|
import { WRITE_LIFECYCLE_CHECKS } from './write-lifecycle-checks.js';
|
|
6
7
|
/**
|
|
7
8
|
* The only file later phases append to when they add a doctor/lint check:
|
|
@@ -11,6 +12,7 @@ export const CHECKS = [
|
|
|
11
12
|
...WRITE_LIFECYCLE_CHECKS,
|
|
12
13
|
...CATALOG_CHECKS,
|
|
13
14
|
...ORGANIZE_CHECKS,
|
|
15
|
+
...RETRIEVAL_CHECKS,
|
|
14
16
|
...INTEGRITY_CHECKS,
|
|
15
17
|
...HARNESS_PORTABILITY_CHECKS,
|
|
16
18
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA+B;IAChD,GAAG,sBAAsB;IACzB,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,gBAAgB;IACnB,GAAG,0BAA0B;CAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA+B;IAChD,GAAG,sBAAsB;IACzB,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,0BAA0B;CAC9B,CAAC"}
|
|
@@ -10,7 +10,17 @@ export declare const orphanNotesCheck: import("./types.js").CheckDefinition;
|
|
|
10
10
|
* `ambiguous` out rather than sharing it.
|
|
11
11
|
*/
|
|
12
12
|
export declare const brokenLinksCheck: import("./types.js").CheckDefinition;
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* context-organize: material still sitting in the inbox.
|
|
15
|
+
*
|
|
16
|
+
* Read off the filesystem, not out of `ctx.notes()`. The inbox lives inside
|
|
17
|
+
* the capture tier, which is a declared retrieval exclusion, so a capture is
|
|
18
|
+
* not a note and note enumeration cannot see it — a version of this check
|
|
19
|
+
* that filtered notes would report nothing, forever, and look healthy doing
|
|
20
|
+
* it. Location is also the whole condition: a capture pipeline may write a
|
|
21
|
+
* source type and id at capture time, so absent frontmatter no longer
|
|
22
|
+
* distinguishes ingested from not. Leaving the inbox is what ingest does.
|
|
23
|
+
*/
|
|
14
24
|
export declare const uningestedInboxCheck: import("./types.js").CheckDefinition;
|
|
15
25
|
/**
|
|
16
26
|
* context-organize spec: "notes with no catalog entry as covered by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organize-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/organize-checks.ts"],"names":[],"mappings":"AAYA,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,sCAiB3B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,sCAoB3B,CAAC;AAEH
|
|
1
|
+
{"version":3,"file":"organize-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/organize-checks.ts"],"names":[],"mappings":"AAYA,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,sCAiB3B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,sCAoB3B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,sCAmB/B,CAAC;AAsBH;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,sCAgB/B,CAAC;AAEH,oKAAoK;AACpK,eAAO,MAAM,gBAAgB,sCAqB3B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gCAAgC,sCA2B3C,CAAC;AAEH,eAAO,MAAM,eAAe,wCAO3B,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
1
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
2
3
|
import { AGENTS_MD_SECTION_ORDER, agentsMdPath } from '../agents-doc.js';
|
|
3
4
|
import { checkCatalogCoverage } from '../catalog/build.js';
|
|
4
5
|
import { reorderFencedRegions } from '../fs/fenced-region.js';
|
|
5
6
|
import { orphans } from '../graph/query.js';
|
|
6
|
-
import { hasSourceIdentity } from '../ingest/identity.js';
|
|
7
7
|
import { findStaleRollups } from '../rollup.js';
|
|
8
8
|
import { defineCheck } from './types.js';
|
|
9
9
|
const GRAPH_SKIP_REASON = 'graph has not been built yet — run `ctxr graph build`';
|
|
@@ -58,7 +58,17 @@ export const brokenLinksCheck = defineCheck({
|
|
|
58
58
|
return { status: findings.length > 0 ? 'fail' : 'pass', findings };
|
|
59
59
|
},
|
|
60
60
|
});
|
|
61
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* context-organize: material still sitting in the inbox.
|
|
63
|
+
*
|
|
64
|
+
* Read off the filesystem, not out of `ctx.notes()`. The inbox lives inside
|
|
65
|
+
* the capture tier, which is a declared retrieval exclusion, so a capture is
|
|
66
|
+
* not a note and note enumeration cannot see it — a version of this check
|
|
67
|
+
* that filtered notes would report nothing, forever, and look healthy doing
|
|
68
|
+
* it. Location is also the whole condition: a capture pipeline may write a
|
|
69
|
+
* source type and id at capture time, so absent frontmatter no longer
|
|
70
|
+
* distinguishes ingested from not. Leaving the inbox is what ingest does.
|
|
71
|
+
*/
|
|
62
72
|
export const uningestedInboxCheck = defineCheck({
|
|
63
73
|
id: 'organize.uningested_inbox_material',
|
|
64
74
|
title: 'Inbox material not yet ingested',
|
|
@@ -66,21 +76,41 @@ export const uningestedInboxCheck = defineCheck({
|
|
|
66
76
|
capability: 'context-organize',
|
|
67
77
|
scopes: ['store'],
|
|
68
78
|
async run(ctx) {
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
.filter((note) => note.path.startsWith(prefix) && !hasSourceIdentity(note))
|
|
75
|
-
.map((note) => ({
|
|
79
|
+
const inboxPath = ctx.config.ingest.inbox_path;
|
|
80
|
+
const findings = (await filesUnder(path.join(ctx.storeRoot, inboxPath)))
|
|
81
|
+
.map((relativeToInbox) => `${inboxPath.replace(/\/+$/, '')}/${relativeToInbox}`)
|
|
82
|
+
.sort()
|
|
83
|
+
.map((capturePath) => ({
|
|
76
84
|
code: 'organize.uningested_inbox_material',
|
|
77
85
|
severity: 'info',
|
|
78
|
-
message: `"${
|
|
79
|
-
subject:
|
|
86
|
+
message: `"${capturePath}" is in the inbox but has not been ingested.`,
|
|
87
|
+
subject: capturePath,
|
|
80
88
|
}));
|
|
81
89
|
return { status: findings.length > 0 ? 'fail' : 'pass', findings };
|
|
82
90
|
},
|
|
83
91
|
});
|
|
92
|
+
/** Every file under `dir`, recursively, as forward-slash paths relative to it. An absent directory has none. */
|
|
93
|
+
async function filesUnder(dir) {
|
|
94
|
+
let entries;
|
|
95
|
+
try {
|
|
96
|
+
entries = await readdir(dir, { withFileTypes: true });
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
if (err.code === 'ENOENT')
|
|
100
|
+
return [];
|
|
101
|
+
throw err;
|
|
102
|
+
}
|
|
103
|
+
const found = [];
|
|
104
|
+
for (const entry of entries) {
|
|
105
|
+
if (entry.isDirectory()) {
|
|
106
|
+
found.push(...(await filesUnder(path.join(dir, entry.name))).map((nested) => `${entry.name}/${nested}`));
|
|
107
|
+
}
|
|
108
|
+
else if (entry.isFile() && entry.name !== '.gitkeep') {
|
|
109
|
+
found.push(entry.name);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return found;
|
|
113
|
+
}
|
|
84
114
|
/**
|
|
85
115
|
* context-organize spec: "notes with no catalog entry as covered by
|
|
86
116
|
* context-catalog" — the same underlying condition as `catalogCoverageCheck`
|