ctxr-cli 0.5.0 → 0.6.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/dist/adapter.d.ts +0 -1
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js.map +1 -1
- package/dist/adapters/builtin/index.d.ts.map +1 -1
- package/dist/adapters/builtin/index.js +2 -2
- package/dist/adapters/builtin/index.js.map +1 -1
- package/dist/adapters/harness/claude-code.d.ts.map +1 -1
- package/dist/adapters/harness/claude-code.js +30 -14
- package/dist/adapters/harness/claude-code.js.map +1 -1
- package/dist/adapters/harness/hermes-agent.d.ts +9 -0
- package/dist/adapters/harness/hermes-agent.d.ts.map +1 -0
- package/dist/adapters/harness/hermes-agent.js +13 -0
- package/dist/adapters/harness/hermes-agent.js.map +1 -0
- package/dist/adapters/types.d.ts +39 -18
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js +3 -3
- package/dist/adapters/types.js.map +1 -1
- package/dist/commands/adapters-generate.d.ts +4 -2
- package/dist/commands/adapters-generate.d.ts.map +1 -1
- package/dist/commands/adapters-generate.js +14 -6
- package/dist/commands/adapters-generate.js.map +1 -1
- package/dist/commands/archive.d.ts +4 -2
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +5 -3
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +1 -6
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +84 -18
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/publish-check.d.ts +23 -0
- package/dist/commands/publish-check.d.ts.map +1 -0
- package/dist/commands/publish-check.js +116 -0
- package/dist/commands/publish-check.js.map +1 -0
- package/dist/commands/publish-gather.d.ts +37 -0
- package/dist/commands/publish-gather.d.ts.map +1 -0
- package/dist/commands/publish-gather.js +92 -0
- package/dist/commands/publish-gather.js.map +1 -0
- package/dist/commands/publish-new.d.ts +18 -0
- package/dist/commands/publish-new.d.ts.map +1 -0
- package/dist/commands/publish-new.js +86 -0
- package/dist/commands/publish-new.js.map +1 -0
- package/dist/commands/serve.d.ts +32 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +170 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/update.js +3 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/config/defaults.d.ts +39 -17
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +40 -21
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +36 -9
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +71 -15
- package/dist/config/schema.js.map +1 -1
- package/dist/core/browse/link-resolver.d.ts +12 -0
- package/dist/core/browse/link-resolver.d.ts.map +1 -0
- package/dist/core/browse/link-resolver.js +12 -0
- package/dist/core/browse/link-resolver.js.map +1 -0
- package/dist/core/browse/render.d.ts +5 -0
- package/dist/core/browse/render.d.ts.map +1 -0
- package/dist/core/browse/render.js +66 -0
- package/dist/core/browse/render.js.map +1 -0
- package/dist/core/browse/routes.d.ts +31 -0
- package/dist/core/browse/routes.d.ts.map +1 -0
- package/dist/core/browse/routes.js +56 -0
- package/dist/core/browse/routes.js.map +1 -0
- package/dist/core/browse/templates.d.ts +4 -0
- package/dist/core/browse/templates.d.ts.map +1 -0
- package/dist/core/browse/templates.js +26 -0
- package/dist/core/browse/templates.js.map +1 -0
- package/dist/core/checks/integrity-checks.d.ts +18 -2
- package/dist/core/checks/integrity-checks.d.ts.map +1 -1
- package/dist/core/checks/integrity-checks.js +55 -10
- package/dist/core/checks/integrity-checks.js.map +1 -1
- package/dist/core/checks/organize-checks.d.ts +9 -1
- package/dist/core/checks/organize-checks.d.ts.map +1 -1
- package/dist/core/checks/organize-checks.js +13 -3
- package/dist/core/checks/organize-checks.js.map +1 -1
- package/dist/core/convention-doc.d.ts +8 -9
- package/dist/core/convention-doc.d.ts.map +1 -1
- package/dist/core/convention-doc.js +45 -18
- package/dist/core/convention-doc.js.map +1 -1
- package/dist/core/conventions.d.ts +2 -2
- package/dist/core/conventions.js +2 -2
- package/dist/core/disclosure/model.d.ts +11 -0
- package/dist/core/disclosure/model.d.ts.map +1 -1
- package/dist/core/disclosure/model.js +24 -0
- package/dist/core/disclosure/model.js.map +1 -1
- package/dist/core/errors.d.ts +27 -41
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +76 -119
- package/dist/core/errors.js.map +1 -1
- package/dist/core/git/repo.d.ts +0 -6
- package/dist/core/git/repo.d.ts.map +1 -1
- package/dist/core/git/repo.js +0 -13
- package/dist/core/git/repo.js.map +1 -1
- package/dist/core/git/worktree.d.ts +4 -7
- package/dist/core/git/worktree.d.ts.map +1 -1
- package/dist/core/git/worktree.js +4 -10
- package/dist/core/git/worktree.js.map +1 -1
- package/dist/core/graph/model.d.ts +14 -0
- package/dist/core/graph/model.d.ts.map +1 -1
- package/dist/core/graph/model.js +30 -14
- package/dist/core/graph/model.js.map +1 -1
- package/dist/core/harness/bridge.d.ts +30 -0
- package/dist/core/harness/bridge.d.ts.map +1 -0
- package/dist/core/harness/bridge.js +178 -0
- package/dist/core/harness/bridge.js.map +1 -0
- package/dist/core/json-config-merge.d.ts.map +1 -1
- package/dist/core/json-config-merge.js +30 -7
- package/dist/core/json-config-merge.js.map +1 -1
- package/dist/core/migrations/archive-destination-from-taxonomy.d.ts +35 -0
- package/dist/core/migrations/archive-destination-from-taxonomy.d.ts.map +1 -0
- package/dist/core/migrations/archive-destination-from-taxonomy.js +109 -0
- package/dist/core/migrations/archive-destination-from-taxonomy.js.map +1 -0
- package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts +19 -0
- package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts.map +1 -0
- package/dist/core/migrations/drop-forge-and-workspaces-external.js +49 -0
- package/dist/core/migrations/drop-forge-and-workspaces-external.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/notes/list.d.ts.map +1 -1
- package/dist/core/notes/list.js +5 -1
- package/dist/core/notes/list.js.map +1 -1
- package/dist/core/publish/script-check.d.ts +12 -0
- package/dist/core/publish/script-check.d.ts.map +1 -0
- package/dist/core/publish/script-check.js +39 -0
- package/dist/core/publish/script-check.js.map +1 -0
- package/dist/core/reconcile.d.ts +3 -0
- package/dist/core/reconcile.d.ts.map +1 -1
- package/dist/core/reconcile.js +15 -5
- package/dist/core/reconcile.js.map +1 -1
- package/dist/core/session.d.ts +9 -9
- package/dist/core/session.js +9 -9
- package/dist/core/skills.d.ts +36 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +154 -29
- package/dist/core/skills.js.map +1 -1
- package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -1
- package/dist/core/write-lifecycle/path-gate.js +4 -2
- package/dist/core/write-lifecycle/path-gate.js.map +1 -1
- package/dist/prompt/inquirer-prompter.d.ts.map +1 -1
- package/dist/prompt/inquirer-prompter.js +11 -1
- package/dist/prompt/inquirer-prompter.js.map +1 -1
- package/dist/prompt/prompter.d.ts +16 -0
- package/dist/prompt/prompter.d.ts.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +61 -55
- package/dist/run.js.map +1 -1
- package/dist/taxonomy/profiles.d.ts +11 -0
- package/dist/taxonomy/profiles.d.ts.map +1 -1
- package/dist/taxonomy/profiles.js +1 -0
- package/dist/taxonomy/profiles.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -1
- package/templates/agents/canonical.md +1 -1
- package/templates/conventions/{baseline-convention.md → baseline-conventions.md} +4 -4
- package/templates/conventions/{custom-convention-seed.md → house-conventions-seed.md} +15 -2
- package/templates/hooks/pre-push.sh +1 -1
- package/templates/serve/shell.html +15 -0
- package/templates/serve/style.css +88 -0
- package/templates/skills/ctxr-land.md +32 -18
- package/templates/skills/ctxr-organize-audit.md +1 -1
- package/templates/skills/ctxr-publish.md +79 -0
- package/templates/skills/ctxr-session-capture.md +44 -1
- package/templates/skills/ctxr-session-lifecycle.md +20 -1
- package/templates/skills/ctxr-submit.md +15 -11
- package/templates/vendor/frontend-design/LICENSE.txt +177 -0
- package/templates/vendor/frontend-design/SKILL.md +55 -0
- package/templates/vendor/frontend-design/provenance.json +7 -0
- package/dist/adapters/forge/github.d.ts +0 -12
- package/dist/adapters/forge/github.d.ts.map +0 -1
- package/dist/adapters/forge/github.js +0 -76
- package/dist/adapters/forge/github.js.map +0 -1
- package/dist/adapters/forge/types.d.ts +0 -46
- package/dist/adapters/forge/types.d.ts.map +0 -1
- package/dist/adapters/forge/types.js +0 -2
- package/dist/adapters/forge/types.js.map +0 -1
- package/dist/commands/session-abandon.d.ts +0 -13
- package/dist/commands/session-abandon.d.ts.map +0 -1
- package/dist/commands/session-abandon.js +0 -22
- package/dist/commands/session-abandon.js.map +0 -1
- package/dist/commands/session-land.d.ts +0 -45
- package/dist/commands/session-land.d.ts.map +0 -1
- package/dist/commands/session-land.js +0 -171
- package/dist/commands/session-land.js.map +0 -1
- package/dist/commands/session-reap.d.ts +0 -22
- package/dist/commands/session-reap.d.ts.map +0 -1
- package/dist/commands/session-reap.js +0 -52
- package/dist/commands/session-reap.js.map +0 -1
- package/dist/commands/session-submit.d.ts +0 -29
- package/dist/commands/session-submit.d.ts.map +0 -1
- package/dist/commands/session-submit.js +0 -72
- package/dist/commands/session-submit.js.map +0 -1
package/dist/commands/init.js
CHANGED
|
@@ -3,16 +3,18 @@ import { mkdir, readFile } from 'node:fs/promises';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { parse as parseYaml } from 'yaml';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { DEFAULT_ADAPTERS,
|
|
6
|
+
import { DEFAULT_ADAPTERS, DEFAULT_ARCHIVE_DESTINATION, DEFAULT_ROLLUP_STALE_DAYS, DEFAULT_CATALOG_PATH, DEFAULT_CATALOG_SECTION_MAX_BYTES, DEFAULT_PUBLISH_PATH, DEFAULT_VENDORED_SKILLS, DEFAULT_BASELINE_CONVENTIONS_FILE_NAME, DEFAULT_HOUSE_CONVENTIONS_FILE_NAME, DEFAULT_GUIDANCE_PATH, DEFAULT_DERIVED_PATHS, DEFAULT_DIFF_SIZE_CEILING_LINES, DEFAULT_EXCLUDE_PATHS, DEFAULT_HARD_WALLS, DEFAULT_INBOX_PATH, DEFAULT_TRACKING_PARAMS, DEFAULT_INTERNAL_AUDIENCES, DEFAULT_MISSION_PATH, DEFAULT_SKILLS_PATH, DEFAULT_RELATIONS, DEFAULT_GRAPH_SETTINGS, DEFAULT_SESSION_BRANCH_PREFIX, DEFAULT_VISIBILITY_CONTEXT, DEFAULT_VISIBILITY_FIELD_KEY, DEFAULT_WORKTREES_PATH, } from '../config/defaults.js';
|
|
7
7
|
import { configPathFor, readConfig } from '../config/load.js';
|
|
8
8
|
import { renderStoreConfig } from '../config/render.js';
|
|
9
|
-
import { SUPPORTED_SCHEMA_VERSION, TaxonomyLayerSchema } from '../config/schema.js';
|
|
9
|
+
import { SUPPORTED_SCHEMA_VERSION, TaxonomyLayerSchema, } from '../config/schema.js';
|
|
10
10
|
import { buildAgentsCanonicalSection, buildAgentsCaptureSection, buildAgentsConventionsSection, buildAgentsLegRoutingSection, buildAgentsMissionSection, buildAgentsPlacementSection, agentsMdPath, } from '../core/agents-doc.js';
|
|
11
|
-
import {
|
|
12
|
-
import { syncShippedSkills } from '../core/skills.js';
|
|
11
|
+
import { seedHouseConventionsFile, syncBaselineConventions } from '../core/convention-doc.js';
|
|
12
|
+
import { syncShippedSkills, syncVendoredSkills } from '../core/skills.js';
|
|
13
|
+
import { bridgeHarnessSkills } from '../core/harness/bridge.js';
|
|
13
14
|
import { reconcileStore, WORKTREES_GITIGNORE_FENCE } from '../core/reconcile.js';
|
|
14
15
|
import { isInteractive } from '../core/env.js';
|
|
15
|
-
import {
|
|
16
|
+
import { CLI_VERSION } from '../version.js';
|
|
17
|
+
import { GitIdentityMissingError, InvalidTaxonomyFileError, TaxonomySelectionConflictError, UnknownHarnessError, UnknownTaxonomyProfileError, } from '../core/errors.js';
|
|
16
18
|
import { ExitCode } from '../core/exit-codes.js';
|
|
17
19
|
import { writeFileAtomic } from '../core/fs/atomic.js';
|
|
18
20
|
import { upsertFencedRegionInFile } from '../core/fs/fenced-region.js';
|
|
@@ -23,6 +25,18 @@ import { resolveRootForInit } from '../core/root.js';
|
|
|
23
25
|
import { defaultProfile, DEFAULT_PROFILE_ID, profileById, SHIPPED_PROFILES } from '../taxonomy/profiles.js';
|
|
24
26
|
export const requires = { store: 'absent' };
|
|
25
27
|
const CustomTaxonomyFileSchema = z.object({ layers: z.array(TaxonomyLayerSchema) });
|
|
28
|
+
/**
|
|
29
|
+
* Spread rather than a plain key, so `archiveDestination` stays genuinely
|
|
30
|
+
* optional on `ResolvedTaxonomy` rather than always-present-but-possibly-
|
|
31
|
+
* undefined, matching how the config schema keeps its own optional fields.
|
|
32
|
+
*/
|
|
33
|
+
function fromProfile(profile) {
|
|
34
|
+
return {
|
|
35
|
+
profileId: profile.id,
|
|
36
|
+
layers: [...profile.layers],
|
|
37
|
+
...(profile.archiveDestination !== undefined ? { archiveDestination: profile.archiveDestination } : {}),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
26
40
|
async function resolveTaxonomy(env, flags) {
|
|
27
41
|
if (flags.profile && flags.taxonomy) {
|
|
28
42
|
throw new TaxonomySelectionConflictError();
|
|
@@ -45,7 +59,7 @@ async function resolveTaxonomy(env, flags) {
|
|
|
45
59
|
if (!profile) {
|
|
46
60
|
throw new UnknownTaxonomyProfileError(flags.profile, SHIPPED_PROFILES.map((p) => p.id));
|
|
47
61
|
}
|
|
48
|
-
return
|
|
62
|
+
return fromProfile(profile);
|
|
49
63
|
}
|
|
50
64
|
if (isInteractive(env)) {
|
|
51
65
|
const selectedId = await env.prompter.selectProfile({
|
|
@@ -54,11 +68,43 @@ async function resolveTaxonomy(env, flags) {
|
|
|
54
68
|
defaultId: DEFAULT_PROFILE_ID,
|
|
55
69
|
});
|
|
56
70
|
const profile = profileById(selectedId) ?? defaultProfile();
|
|
57
|
-
return
|
|
71
|
+
return fromProfile(profile);
|
|
58
72
|
}
|
|
59
73
|
// Non-interactive, nothing specified: PARA immediately — never prompt, never block.
|
|
60
|
-
|
|
61
|
-
|
|
74
|
+
return fromProfile(defaultProfile());
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* vendored-craft-skills spec ("the operator declares which harnesses a
|
|
78
|
+
* store targets, at setup"): the selectable harness-generation adapters,
|
|
79
|
+
* presented at init and never inferred by inspecting the host machine.
|
|
80
|
+
*/
|
|
81
|
+
const SELECTABLE_HARNESSES = [
|
|
82
|
+
{ id: 'claude-code', name: 'Claude Code', description: 'Generates CLAUDE.md importing AGENTS.md, plus a permission config with the write-gate hook.' },
|
|
83
|
+
{ id: 'hermes-agent', name: 'Hermes', description: 'Reads AGENTS.md directly — no entry file generated.' },
|
|
84
|
+
];
|
|
85
|
+
const DEFAULT_HARNESS_IDS = ['claude-code'];
|
|
86
|
+
async function resolveHarnesses(env, flags) {
|
|
87
|
+
if (flags.harness !== undefined) {
|
|
88
|
+
const trimmed = flags.harness.trim();
|
|
89
|
+
if (trimmed === '' || trimmed === 'none')
|
|
90
|
+
return [];
|
|
91
|
+
const ids = trimmed.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
|
|
92
|
+
const known = new Set(SELECTABLE_HARNESSES.map((h) => h.id));
|
|
93
|
+
for (const id of ids) {
|
|
94
|
+
if (!known.has(id))
|
|
95
|
+
throw new UnknownHarnessError(id, [...known]);
|
|
96
|
+
}
|
|
97
|
+
return [...new Set(ids)];
|
|
98
|
+
}
|
|
99
|
+
if (isInteractive(env)) {
|
|
100
|
+
return env.prompter.selectHarnesses({
|
|
101
|
+
message: 'Which agent harnesses should this store target? (their skills directory is bridged to the canonical one)',
|
|
102
|
+
choices: SELECTABLE_HARNESSES,
|
|
103
|
+
defaultIds: DEFAULT_HARNESS_IDS,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// Non-interactive, nothing specified: the default set immediately — never prompt, never block.
|
|
107
|
+
return [...DEFAULT_HARNESS_IDS];
|
|
62
108
|
}
|
|
63
109
|
async function safeCurrentBranch(env, root) {
|
|
64
110
|
try {
|
|
@@ -93,7 +139,7 @@ async function runInitCore(env, flags) {
|
|
|
93
139
|
if (existsSync(configPath)) {
|
|
94
140
|
const config = await readConfig(root); // validates + gates schema_version
|
|
95
141
|
// Reconciling an existing store is exactly `ctxr update`'s job — one shared implementation.
|
|
96
|
-
await reconcileStore(env, root, config);
|
|
142
|
+
const { findings: reconcileFindings } = await reconcileStore(env, root, config);
|
|
97
143
|
return {
|
|
98
144
|
data: {
|
|
99
145
|
root,
|
|
@@ -111,11 +157,12 @@ async function runInitCore(env, flags) {
|
|
|
111
157
|
},
|
|
112
158
|
schema_version: config.schema_version,
|
|
113
159
|
},
|
|
114
|
-
findings:
|
|
160
|
+
findings: reconcileFindings,
|
|
115
161
|
};
|
|
116
162
|
}
|
|
117
163
|
// --- Resolve taxonomy in memory, no writes yet -------------------------
|
|
118
164
|
const taxonomy = await resolveTaxonomy(env, flags);
|
|
165
|
+
const harnessIds = await resolveHarnesses(env, flags);
|
|
119
166
|
// --- Git preflight, still no writes -------------------------------------
|
|
120
167
|
const toplevel = await findToplevel(env.git, root);
|
|
121
168
|
const findings = [];
|
|
@@ -137,6 +184,12 @@ async function runInitCore(env, flags) {
|
|
|
137
184
|
}
|
|
138
185
|
// Works even pre-commit: git init leaves HEAD pointing at an unborn branch.
|
|
139
186
|
const defaultBranch = (await safeCurrentBranch(env, root)) ?? 'main';
|
|
187
|
+
// The default forge adapter is untouched by --harness, which selects
|
|
188
|
+
// only harness-generation adapters (vendored-craft-skills spec).
|
|
189
|
+
const resolvedAdapters = [
|
|
190
|
+
...DEFAULT_ADAPTERS.filter((a) => a.kind !== 'harness-generation'),
|
|
191
|
+
...harnessIds.map((id) => ({ id, kind: 'harness-generation' })),
|
|
192
|
+
];
|
|
140
193
|
const config = {
|
|
141
194
|
schema_version: SUPPORTED_SCHEMA_VERSION,
|
|
142
195
|
taxonomy: { profile: taxonomy.profileId, layers: taxonomy.layers },
|
|
@@ -145,14 +198,16 @@ async function runInitCore(env, flags) {
|
|
|
145
198
|
derived: { paths: [...DEFAULT_DERIVED_PATHS] },
|
|
146
199
|
retrieval: { exclude_paths: [...DEFAULT_EXCLUDE_PATHS], relations: [...DEFAULT_RELATIONS], graph: { ...DEFAULT_GRAPH_SETTINGS, orphan_exempt_clusters: [] } },
|
|
147
200
|
git: { default_branch: defaultBranch },
|
|
148
|
-
session: { branch_prefix: DEFAULT_SESSION_BRANCH_PREFIX, worktrees_path: DEFAULT_WORKTREES_PATH
|
|
201
|
+
session: { branch_prefix: DEFAULT_SESSION_BRANCH_PREFIX, worktrees_path: DEFAULT_WORKTREES_PATH },
|
|
149
202
|
write_lifecycle: { diff_size_ceiling_lines: DEFAULT_DIFF_SIZE_CEILING_LINES, writable_paths: [] },
|
|
150
203
|
catalog: { path: DEFAULT_CATALOG_PATH, section_max_bytes: DEFAULT_CATALOG_SECTION_MAX_BYTES },
|
|
204
|
+
publish: { path: DEFAULT_PUBLISH_PATH },
|
|
205
|
+
skills: { vendored: [...DEFAULT_VENDORED_SKILLS] },
|
|
151
206
|
disclosure: { internal_audiences: [...DEFAULT_INTERNAL_AUDIENCES], hard_walls: [...DEFAULT_HARD_WALLS], leak_markers: {} },
|
|
152
207
|
ingest: { inbox_path: DEFAULT_INBOX_PATH, tracking_params: [...DEFAULT_TRACKING_PARAMS] },
|
|
153
|
-
organize: {
|
|
208
|
+
organize: { archive_destination: taxonomy.archiveDestination ?? DEFAULT_ARCHIVE_DESTINATION, rollup_stale_days: DEFAULT_ROLLUP_STALE_DAYS, mission_path: DEFAULT_MISSION_PATH },
|
|
154
209
|
harness: { skills_path: DEFAULT_SKILLS_PATH, guidance_path: DEFAULT_GUIDANCE_PATH },
|
|
155
|
-
adapters:
|
|
210
|
+
adapters: resolvedAdapters,
|
|
156
211
|
};
|
|
157
212
|
// Round-trips through the schema internally; throws before any byte is written if it doesn't.
|
|
158
213
|
const configText = renderStoreConfig(config);
|
|
@@ -162,8 +217,8 @@ async function runInitCore(env, flags) {
|
|
|
162
217
|
await upsertFencedRegionInFile(gitignorePath, WORKTREES_GITIGNORE_FENCE, [config.session.worktrees_path]);
|
|
163
218
|
// Guidance-directory content must be current BEFORE the AGENTS.md sections
|
|
164
219
|
// that read it (mission, store conventions) are built below.
|
|
165
|
-
await
|
|
166
|
-
const
|
|
220
|
+
await syncBaselineConventions(root, config);
|
|
221
|
+
const houseConventionsSeeded = await seedHouseConventionsFile(root, config);
|
|
167
222
|
const missionSeeded = config.organize.mission_path ? await seedMissionDocument(root, config.organize.mission_path) : null;
|
|
168
223
|
// harness-portability spec "Generated sections render in a fixed order":
|
|
169
224
|
// called in that order directly — a fresh AGENTS.md has no existing fences
|
|
@@ -174,10 +229,13 @@ async function runInitCore(env, flags) {
|
|
|
174
229
|
await buildAgentsCaptureSection(root, config);
|
|
175
230
|
await buildAgentsPlacementSection(root, config);
|
|
176
231
|
const skillFilesCreated = await syncShippedSkills(root, config);
|
|
232
|
+
const { changed: vendoredSkillFilesCreated, findings: vendoredFindings } = await syncVendoredSkills(root, config, CLI_VERSION);
|
|
233
|
+
findings.push(...vendoredFindings);
|
|
234
|
+
const bridged = await bridgeHarnessSkills(root, config);
|
|
177
235
|
await buildAgentsConventionsSection(root, config);
|
|
178
236
|
const guidanceFilesCreated = [
|
|
179
|
-
path.join(config.harness.guidance_path,
|
|
180
|
-
...(
|
|
237
|
+
path.join(config.harness.guidance_path, DEFAULT_BASELINE_CONVENTIONS_FILE_NAME),
|
|
238
|
+
...(houseConventionsSeeded.created ? [path.join(config.harness.guidance_path, DEFAULT_HOUSE_CONVENTIONS_FILE_NAME)] : []),
|
|
181
239
|
...(missionSeeded ? [missionSeeded] : []),
|
|
182
240
|
].map((p) => p.split(path.sep).join('/'));
|
|
183
241
|
// One directory per configured layer with a .gitkeep — makes Zettelkasten's
|
|
@@ -197,12 +255,18 @@ async function runInitCore(env, flags) {
|
|
|
197
255
|
const { changed: hookFiles } = await installHooks(root, defaultBranch);
|
|
198
256
|
await configureHooksPath(env.git, root);
|
|
199
257
|
const relConfigPath = path.relative(root, configPath);
|
|
258
|
+
// No trailing slash: `git add` refuses a directory pathspec ending in "/"
|
|
259
|
+
// when that path is a symlink ("pathspec is beyond a symbolic link"), which
|
|
260
|
+
// a symlink-mode bridge always is. The bare path stages the link itself.
|
|
261
|
+
const bridgedPaths = bridged.map((r) => r.path.replace(/\/+$/, ''));
|
|
200
262
|
await addPaths(env.git, root, [
|
|
201
263
|
relConfigPath,
|
|
202
264
|
'.gitignore',
|
|
203
265
|
path.relative(root, agentsMdPath(root)),
|
|
204
266
|
...layerGitkeeps,
|
|
205
267
|
...skillFilesCreated,
|
|
268
|
+
...vendoredSkillFilesCreated,
|
|
269
|
+
...bridgedPaths,
|
|
206
270
|
...guidanceFilesCreated,
|
|
207
271
|
...hookFiles,
|
|
208
272
|
]);
|
|
@@ -217,6 +281,8 @@ async function runInitCore(env, flags) {
|
|
|
217
281
|
path.relative(root, agentsMdPath(root)),
|
|
218
282
|
...layerGitkeeps,
|
|
219
283
|
...skillFilesCreated,
|
|
284
|
+
...vendoredSkillFilesCreated,
|
|
285
|
+
...bridgedPaths,
|
|
220
286
|
...guidanceFilesCreated,
|
|
221
287
|
...hookFiles,
|
|
222
288
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CommandOutcome, CommandRequires } from '../core/command.js';
|
|
2
|
+
import type { Store } from '../core/store.js';
|
|
3
|
+
export declare const requires: CommandRequires;
|
|
4
|
+
export interface PublishCheckFlags {
|
|
5
|
+
path: string;
|
|
6
|
+
}
|
|
7
|
+
export interface PublishCheckFailure {
|
|
8
|
+
check: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}
|
|
11
|
+
export interface PublishCheckData {
|
|
12
|
+
path: string;
|
|
13
|
+
passed: boolean;
|
|
14
|
+
failures: PublishCheckFailure[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* publish spec: the mechanized half of the page-checklist — every check
|
|
18
|
+
* answerable from the file and its sibling README alone, never a caller-
|
|
19
|
+
* supplied assertion (the source convention's `--expect NEEDLE=COUNT` mode
|
|
20
|
+
* is deliberately not carried forward; see design.md).
|
|
21
|
+
*/
|
|
22
|
+
export declare function execute(store: Store, flags: PublishCheckFlags): Promise<CommandOutcome<PublishCheckData>>;
|
|
23
|
+
//# sourceMappingURL=publish-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-check.d.ts","sourceRoot":"","sources":["../../src/commands/publish-check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AA8DD;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAgD/G"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { PublishPageNotFoundError } from '../core/errors.js';
|
|
5
|
+
import { ExitCode } from '../core/exit-codes.js';
|
|
6
|
+
import { parseNoteText } from '../core/notes/parse.js';
|
|
7
|
+
import { checkScriptSyntax } from '../core/publish/script-check.js';
|
|
8
|
+
export const requires = { store: 'required' };
|
|
9
|
+
/** publish spec: the fixed tag list a tag-balance pass counts, matching the source convention's checker. */
|
|
10
|
+
const BALANCE_TAGS = ['section', 'div', 'h1', 'h2', 'h3', 'h4', 'article', 'header', 'main', 'nav', 'aside', 'footer', 'ul', 'ol', 'li', 'p', 'table', 'tr', 'td', 'th'];
|
|
11
|
+
function stripNonStructural(html) {
|
|
12
|
+
return html.replace(/<!--[\s\S]*?-->/g, '').replace(/<script[\s\S]*?<\/script>/gi, '').replace(/<style[\s\S]*?<\/style>/gi, '');
|
|
13
|
+
}
|
|
14
|
+
function checkNoExternalReferences(html) {
|
|
15
|
+
const match = /(?:src|href)\s*=\s*["']https?:\/\/[^"']*["']/i.exec(html);
|
|
16
|
+
if (!match)
|
|
17
|
+
return [];
|
|
18
|
+
return [{ check: 'no-external-references', message: `references an external network resource: ${match[0]}` }];
|
|
19
|
+
}
|
|
20
|
+
function checkViewportMeta(html) {
|
|
21
|
+
if (/<meta[^>]*name\s*=\s*["']viewport["']/i.test(html))
|
|
22
|
+
return [];
|
|
23
|
+
return [{ check: 'viewport-meta', message: 'no <meta name="viewport"> tag' }];
|
|
24
|
+
}
|
|
25
|
+
function checkPrintRule(html) {
|
|
26
|
+
if (/@media\s+print/i.test(html))
|
|
27
|
+
return [];
|
|
28
|
+
return [{ check: 'print-rule', message: 'no @media print rule' }];
|
|
29
|
+
}
|
|
30
|
+
function checkProvenanceLine(html) {
|
|
31
|
+
const hasDate = /\d{4}-\d{2}-\d{2}/.test(html);
|
|
32
|
+
const hasReadmeLink = /href\s*=\s*["'][^"']*readme[^"']*["']/i.test(html);
|
|
33
|
+
if (hasDate && hasReadmeLink)
|
|
34
|
+
return [];
|
|
35
|
+
return [{ check: 'provenance-line', message: 'no provenance line pairing a date with a link to the sibling README' }];
|
|
36
|
+
}
|
|
37
|
+
function checkTagBalance(html) {
|
|
38
|
+
const stripped = stripNonStructural(html);
|
|
39
|
+
const failures = [];
|
|
40
|
+
for (const tag of BALANCE_TAGS) {
|
|
41
|
+
const open = (stripped.match(new RegExp(`<${tag}(?:\\s[^>]*)?>`, 'gi')) ?? []).length;
|
|
42
|
+
const close = (stripped.match(new RegExp(`</${tag}\\s*>`, 'gi')) ?? []).length;
|
|
43
|
+
if (open !== close)
|
|
44
|
+
failures.push({ check: 'tag-balance', message: `<${tag}>: open=${open} close=${close}` });
|
|
45
|
+
}
|
|
46
|
+
return failures;
|
|
47
|
+
}
|
|
48
|
+
function extractInlineScripts(html) {
|
|
49
|
+
const blocks = [];
|
|
50
|
+
const re = /<script([^>]*)>([\s\S]*?)<\/script>/gi;
|
|
51
|
+
let match;
|
|
52
|
+
while ((match = re.exec(html))) {
|
|
53
|
+
const attrs = match[1] ?? '';
|
|
54
|
+
if (/\bsrc\s*=/i.test(attrs))
|
|
55
|
+
continue; // external — already caught by checkNoExternalReferences if http(s)
|
|
56
|
+
const body = (match[2] ?? '').trim();
|
|
57
|
+
if (body.length > 0)
|
|
58
|
+
blocks.push(body);
|
|
59
|
+
}
|
|
60
|
+
return blocks;
|
|
61
|
+
}
|
|
62
|
+
async function checkInlineScriptSyntax(html) {
|
|
63
|
+
const scripts = extractInlineScripts(html);
|
|
64
|
+
const errors = await checkScriptSyntax(scripts);
|
|
65
|
+
return errors.map((e) => ({ check: 'script-syntax', message: `script block #${e.index}: ${e.message}` }));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* publish spec: the mechanized half of the page-checklist — every check
|
|
69
|
+
* answerable from the file and its sibling README alone, never a caller-
|
|
70
|
+
* supplied assertion (the source convention's `--expect NEEDLE=COUNT` mode
|
|
71
|
+
* is deliberately not carried forward; see design.md).
|
|
72
|
+
*/
|
|
73
|
+
export async function execute(store, flags) {
|
|
74
|
+
const absolutePath = path.isAbsolute(flags.path) ? flags.path : path.resolve(store.root, flags.path);
|
|
75
|
+
const relativePath = path.relative(store.root, absolutePath).split(path.sep).join('/');
|
|
76
|
+
if (!existsSync(absolutePath)) {
|
|
77
|
+
throw new PublishPageNotFoundError(relativePath);
|
|
78
|
+
}
|
|
79
|
+
const html = await readFile(absolutePath, 'utf8');
|
|
80
|
+
const pageDir = path.dirname(absolutePath);
|
|
81
|
+
const readmePath = path.join(pageDir, 'README.md');
|
|
82
|
+
const readmeRelativePath = path.relative(store.root, readmePath).split(path.sep).join('/');
|
|
83
|
+
const failures = [
|
|
84
|
+
...checkNoExternalReferences(html),
|
|
85
|
+
...checkViewportMeta(html),
|
|
86
|
+
...checkPrintRule(html),
|
|
87
|
+
...checkProvenanceLine(html),
|
|
88
|
+
...checkTagBalance(html),
|
|
89
|
+
];
|
|
90
|
+
if (!existsSync(readmePath)) {
|
|
91
|
+
failures.push({ check: 'sibling-readme', message: `no sibling README at "${readmeRelativePath}"` });
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const readmeRaw = await readFile(readmePath, 'utf8');
|
|
95
|
+
const readmeNote = parseNoteText(readmeRaw, readmeRelativePath);
|
|
96
|
+
const visibilityKey = store.config.fields.visibility;
|
|
97
|
+
if (readmeNote.frontmatter?.[visibilityKey] !== undefined) {
|
|
98
|
+
failures.push({ check: 'readme-frontmatter', message: `README declares the visibility field ("${visibilityKey}") — a published page is never a note` });
|
|
99
|
+
}
|
|
100
|
+
if (readmeNote.frontmatter?.kind !== undefined) {
|
|
101
|
+
failures.push({ check: 'readme-frontmatter', message: 'README declares a "kind" field — a page\'s kind is the folder name alone' });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
failures.push(...(await checkInlineScriptSyntax(html)));
|
|
105
|
+
return {
|
|
106
|
+
exitCode: failures.length === 0 ? ExitCode.Ok : ExitCode.CheckFailed,
|
|
107
|
+
data: { path: relativePath, passed: failures.length === 0, failures },
|
|
108
|
+
findings: [],
|
|
109
|
+
humanSummary: failures.length === 0
|
|
110
|
+
? `${relativePath}: all checks passed.`
|
|
111
|
+
: `${relativePath}: ${failures.length} failing check(s): ${failures.map((f) => f.check).join(', ')}.`,
|
|
112
|
+
storeRoot: store.root,
|
|
113
|
+
schemaVersion: store.config.schema_version,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=publish-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-check.js","sourceRoot":"","sources":["../../src/commands/publish-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAiB/D,4GAA4G;AAC5G,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzK,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;AAClI,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,4CAA4C,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACnE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,OAAO,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,IAAI,OAAO,IAAI,aAAa;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,qEAAqE,EAAE,CAAC,CAAC;AACxH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,gBAAgB,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACtF,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC/E,IAAI,IAAI,KAAK,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,GAAG,WAAW,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,uCAAuC,CAAC;IACnD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,oEAAoE;QAC5G,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,IAAY;IACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAY,EAAE,KAAwB;IAClE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACrG,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3F,MAAM,QAAQ,GAA0B;QACtC,GAAG,yBAAyB,CAAC,IAAI,CAAC;QAClC,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAC1B,GAAG,cAAc,CAAC,IAAI,CAAC;QACvB,GAAG,mBAAmB,CAAC,IAAI,CAAC;QAC5B,GAAG,eAAe,CAAC,IAAI,CAAC;KACzB,CAAC;IAEF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,yBAAyB,kBAAkB,GAAG,EAAE,CAAC,CAAC;IACtG,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QACrD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,0CAA0C,aAAa,uCAAuC,EAAE,CAAC,CAAC;QAC1J,CAAC;QACD,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,0EAA0E,EAAE,CAAC,CAAC;QACtI,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAExD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW;QACpE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE;QACrE,QAAQ,EAAE,EAAE;QACZ,YAAY,EACV,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,GAAG,YAAY,sBAAsB;YACvC,CAAC,CAAC,GAAG,YAAY,KAAK,QAAQ,CAAC,MAAM,sBAAsB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACzG,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { CommandOutcome, CommandRequires } from '../core/command.js';
|
|
2
|
+
import { type DisclosureRung, type DisclosureVerdict } from '../core/disclosure/model.js';
|
|
3
|
+
import { type LeakFinding } from '../core/disclosure/leak-scan.js';
|
|
4
|
+
import type { RunEnv } from '../core/env.js';
|
|
5
|
+
import type { Store } from '../core/store.js';
|
|
6
|
+
export declare const requires: CommandRequires;
|
|
7
|
+
export interface PublishGatherFlags {
|
|
8
|
+
under?: string;
|
|
9
|
+
note?: string;
|
|
10
|
+
entity?: string;
|
|
11
|
+
as?: string;
|
|
12
|
+
audience?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface PublishGatherEntry {
|
|
15
|
+
path: string;
|
|
16
|
+
verdict: DisclosureVerdict;
|
|
17
|
+
rung: DisclosureRung;
|
|
18
|
+
leaks: LeakFinding[];
|
|
19
|
+
}
|
|
20
|
+
export interface PublishGatherData {
|
|
21
|
+
selector: 'under' | 'note' | 'entity' | 'as';
|
|
22
|
+
subject: string;
|
|
23
|
+
audience: string;
|
|
24
|
+
count: number;
|
|
25
|
+
notes: PublishGatherEntry[];
|
|
26
|
+
verdict: DisclosureVerdict;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* publish spec: agent-facing enumeration-and-gate only, matching rollup
|
|
30
|
+
* gather's shape — resolves a subject to its note set (one of four
|
|
31
|
+
* selectors), evaluates every note through the same tri-state disclosure
|
|
32
|
+
* evaluation `ctxr check <note> --audience <audience>` uses, and exits with
|
|
33
|
+
* the aggregate (most-restrictive-member) verdict. It renders nothing;
|
|
34
|
+
* building the page is the agent's and its craft skill's work.
|
|
35
|
+
*/
|
|
36
|
+
export declare function execute(env: RunEnv, store: Store, flags: PublishGatherFlags): Promise<CommandOutcome<PublishGatherData>>;
|
|
37
|
+
//# sourceMappingURL=publish-gather.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-gather.d.ts","sourceRoot":"","sources":["../../src/commands/publish-gather.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAuD,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC/I,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAyDD;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAoB9H"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { evaluateDisclosure, VERDICT_EXIT_CODE, worstVerdict } from '../core/disclosure/model.js';
|
|
4
|
+
import { scanNoteForLeaks } from '../core/disclosure/leak-scan.js';
|
|
5
|
+
import { NoteNotFoundError, PublishAudienceRequiredError, PublishSelectorConflictError, PublishSelectorRequiredError } from '../core/errors.js';
|
|
6
|
+
import { ExitCode } from '../core/exit-codes.js';
|
|
7
|
+
import { extractLinkTargets } from '../core/graph/model.js';
|
|
8
|
+
import { listNotes } from '../core/notes/list.js';
|
|
9
|
+
import { parseNote } from '../core/notes/parse.js';
|
|
10
|
+
import { canSee, resolveVisibility } from '../core/notes/visibility.js';
|
|
11
|
+
export const requires = { store: 'required' };
|
|
12
|
+
function toStoreRelativePath(env, store, givenPath) {
|
|
13
|
+
const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
|
|
14
|
+
return path.relative(store.root, absolute).split(path.sep).join('/');
|
|
15
|
+
}
|
|
16
|
+
/** publish spec: --entity resolves to the same backlink enumeration `ctxr rollup gather` uses. */
|
|
17
|
+
async function resolveEntityNotes(env, store, entity) {
|
|
18
|
+
const relativePath = toStoreRelativePath(env, store, entity);
|
|
19
|
+
if (!existsSync(path.join(store.root, relativePath)))
|
|
20
|
+
throw new NoteNotFoundError(relativePath);
|
|
21
|
+
const stem = path.basename(relativePath, '.md');
|
|
22
|
+
const notes = await listNotes(store.root, store.config);
|
|
23
|
+
return notes.filter((n) => n.path !== relativePath && extractLinkTargets(n.body).includes(stem));
|
|
24
|
+
}
|
|
25
|
+
/** publish spec: --as resolves to every note the named context's configured visible-values list admits. */
|
|
26
|
+
async function resolveContextNotes(store, context) {
|
|
27
|
+
const notes = await listNotes(store.root, store.config);
|
|
28
|
+
return notes.filter((note) => canSee(store.config, context, resolveVisibility(store.config, note).value));
|
|
29
|
+
}
|
|
30
|
+
async function resolveNoteSet(env, store, flags) {
|
|
31
|
+
const given = ['under', 'note', 'entity', 'as'].filter((key) => flags[key] !== undefined);
|
|
32
|
+
if (given.length === 0)
|
|
33
|
+
throw new PublishSelectorRequiredError();
|
|
34
|
+
if (given.length > 1)
|
|
35
|
+
throw new PublishSelectorConflictError(given.map((key) => `--${key}`));
|
|
36
|
+
const selector = given[0];
|
|
37
|
+
switch (selector) {
|
|
38
|
+
case 'under': {
|
|
39
|
+
const notes = await listNotes(store.root, store.config, { underPrefix: flags.under });
|
|
40
|
+
return { selector, subject: flags.under, notes };
|
|
41
|
+
}
|
|
42
|
+
case 'note': {
|
|
43
|
+
const relativePath = toStoreRelativePath(env, store, flags.note);
|
|
44
|
+
const absolutePath = path.join(store.root, relativePath);
|
|
45
|
+
let note;
|
|
46
|
+
try {
|
|
47
|
+
note = await parseNote(absolutePath, relativePath);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
if (err.code === 'ENOENT')
|
|
51
|
+
throw new NoteNotFoundError(relativePath);
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
return { selector, subject: relativePath, notes: [note] };
|
|
55
|
+
}
|
|
56
|
+
case 'entity': {
|
|
57
|
+
const notes = await resolveEntityNotes(env, store, flags.entity);
|
|
58
|
+
return { selector, subject: flags.entity, notes };
|
|
59
|
+
}
|
|
60
|
+
case 'as': {
|
|
61
|
+
const notes = await resolveContextNotes(store, flags.as);
|
|
62
|
+
return { selector, subject: flags.as, notes };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* publish spec: agent-facing enumeration-and-gate only, matching rollup
|
|
68
|
+
* gather's shape — resolves a subject to its note set (one of four
|
|
69
|
+
* selectors), evaluates every note through the same tri-state disclosure
|
|
70
|
+
* evaluation `ctxr check <note> --audience <audience>` uses, and exits with
|
|
71
|
+
* the aggregate (most-restrictive-member) verdict. It renders nothing;
|
|
72
|
+
* building the page is the agent's and its craft skill's work.
|
|
73
|
+
*/
|
|
74
|
+
export async function execute(env, store, flags) {
|
|
75
|
+
if (!flags.audience)
|
|
76
|
+
throw new PublishAudienceRequiredError();
|
|
77
|
+
const { selector, subject, notes } = await resolveNoteSet(env, store, flags);
|
|
78
|
+
const entries = notes.map((note) => {
|
|
79
|
+
const { verdict, rung } = evaluateDisclosure(store.config, note, flags.audience);
|
|
80
|
+
return { path: note.path, verdict, rung, leaks: scanNoteForLeaks(store.config, note) };
|
|
81
|
+
});
|
|
82
|
+
const verdict = worstVerdict(entries.map((e) => e.verdict));
|
|
83
|
+
return {
|
|
84
|
+
exitCode: VERDICT_EXIT_CODE[verdict],
|
|
85
|
+
data: { selector, subject, audience: flags.audience, count: entries.length, notes: entries, verdict },
|
|
86
|
+
findings: [],
|
|
87
|
+
humanSummary: `${entries.length} note(s) resolved for audience "${flags.audience}": aggregate ${verdict.toUpperCase()}`,
|
|
88
|
+
storeRoot: store.root,
|
|
89
|
+
schemaVersion: store.config.schema_version,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=publish-gather.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-gather.js","sourceRoot":"","sources":["../../src/commands/publish-gather.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CommandOutcome, CommandRequires } from '../core/command.js';
|
|
2
|
+
import type { Store } from '../core/store.js';
|
|
3
|
+
export declare const requires: CommandRequires;
|
|
4
|
+
export interface PublishNewFlags {
|
|
5
|
+
slug: string;
|
|
6
|
+
}
|
|
7
|
+
export interface PublishNewData {
|
|
8
|
+
slug: string;
|
|
9
|
+
path: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* publish spec: fixes a page's identity once. Refuses a slug that collides
|
|
13
|
+
* with the reserved dated-snapshot naming pattern, and never overwrites an
|
|
14
|
+
* existing page folder — the caller updates in place by editing the
|
|
15
|
+
* existing files directly, never by re-running this command.
|
|
16
|
+
*/
|
|
17
|
+
export declare function execute(store: Store, flags: PublishNewFlags): Promise<CommandOutcome<PublishNewData>>;
|
|
18
|
+
//# sourceMappingURL=publish-new.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-new.d.ts","sourceRoot":"","sources":["../../src/commands/publish-new.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAuDD;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAwB3G"}
|