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
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { mkdir } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { PublishReservedSlugError, PublishSlugExistsError } from '../core/errors.js';
|
|
5
|
+
import { ExitCode } from '../core/exit-codes.js';
|
|
6
|
+
import { writeFileAtomic } from '../core/fs/atomic.js';
|
|
7
|
+
export const requires = { store: 'required' };
|
|
8
|
+
/** publish spec: reserved for frozen snapshots — a living page's slug must never collide with this shape. */
|
|
9
|
+
const RESERVED_SLUG_PATTERN = /^\d{4}-/;
|
|
10
|
+
function pageSkeleton(slug, dateCreated) {
|
|
11
|
+
return [
|
|
12
|
+
'<!doctype html>',
|
|
13
|
+
'<html lang="en">',
|
|
14
|
+
'<head>',
|
|
15
|
+
'<meta charset="utf-8">',
|
|
16
|
+
'<meta name="viewport" content="width=device-width, initial-scale=1">',
|
|
17
|
+
`<title>${slug}</title>`,
|
|
18
|
+
'<style>',
|
|
19
|
+
'@media print {',
|
|
20
|
+
' .no-print { display: none; }',
|
|
21
|
+
'}',
|
|
22
|
+
'</style>',
|
|
23
|
+
'</head>',
|
|
24
|
+
'<body>',
|
|
25
|
+
`<p class="meta"><span>${dateCreated}</span> · <a href="./README.md">spec</a></p>`,
|
|
26
|
+
'<main>',
|
|
27
|
+
'<!-- Build the bespoke representation here. -->',
|
|
28
|
+
'</main>',
|
|
29
|
+
'</body>',
|
|
30
|
+
'</html>',
|
|
31
|
+
'',
|
|
32
|
+
].join('\n');
|
|
33
|
+
}
|
|
34
|
+
function readmeSkeleton(slug, dateCreated) {
|
|
35
|
+
return [
|
|
36
|
+
`# ${slug}`,
|
|
37
|
+
'',
|
|
38
|
+
`date-created: ${dateCreated}`,
|
|
39
|
+
'',
|
|
40
|
+
'## Intent',
|
|
41
|
+
'',
|
|
42
|
+
"One sentence: what does this page let the viewer DO that its source notes couldn't?",
|
|
43
|
+
'',
|
|
44
|
+
'## Source notes',
|
|
45
|
+
'',
|
|
46
|
+
'Wikilinks back into the store. The notes are the source of truth; this page is a representation of them.',
|
|
47
|
+
'',
|
|
48
|
+
'## Audience & use',
|
|
49
|
+
'',
|
|
50
|
+
'Who is this for, and in what setting will they use it?',
|
|
51
|
+
'',
|
|
52
|
+
'## Spec / prompt',
|
|
53
|
+
'',
|
|
54
|
+
'The brief that produced index.html. Keep this so the page is regenerable.',
|
|
55
|
+
'',
|
|
56
|
+
].join('\n');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* publish spec: fixes a page's identity once. Refuses a slug that collides
|
|
60
|
+
* with the reserved dated-snapshot naming pattern, and never overwrites an
|
|
61
|
+
* existing page folder — the caller updates in place by editing the
|
|
62
|
+
* existing files directly, never by re-running this command.
|
|
63
|
+
*/
|
|
64
|
+
export async function execute(store, flags) {
|
|
65
|
+
if (RESERVED_SLUG_PATTERN.test(flags.slug)) {
|
|
66
|
+
throw new PublishReservedSlugError(flags.slug);
|
|
67
|
+
}
|
|
68
|
+
const relativePath = path.join(store.config.publish.path, flags.slug).split(path.sep).join('/');
|
|
69
|
+
const absolutePath = path.join(store.root, relativePath);
|
|
70
|
+
if (existsSync(absolutePath)) {
|
|
71
|
+
throw new PublishSlugExistsError(flags.slug, relativePath);
|
|
72
|
+
}
|
|
73
|
+
const dateCreated = new Date().toISOString().slice(0, 10);
|
|
74
|
+
await mkdir(absolutePath, { recursive: true });
|
|
75
|
+
await writeFileAtomic(path.join(absolutePath, 'index.html'), pageSkeleton(flags.slug, dateCreated));
|
|
76
|
+
await writeFileAtomic(path.join(absolutePath, 'README.md'), readmeSkeleton(flags.slug, dateCreated));
|
|
77
|
+
return {
|
|
78
|
+
exitCode: ExitCode.Ok,
|
|
79
|
+
data: { slug: flags.slug, path: relativePath },
|
|
80
|
+
findings: [],
|
|
81
|
+
humanSummary: `Created "${relativePath}".`,
|
|
82
|
+
storeRoot: store.root,
|
|
83
|
+
schemaVersion: store.config.schema_version,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=publish-new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-new.js","sourceRoot":"","sources":["../../src/commands/publish-new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CommandOutcome, CommandRequires } from '../core/command.js';
|
|
2
|
+
import type { RunEnv } from '../core/env.js';
|
|
3
|
+
import type { Store } from '../core/store.js';
|
|
4
|
+
export declare const requires: CommandRequires;
|
|
5
|
+
export interface ServeFlags {
|
|
6
|
+
port: number;
|
|
7
|
+
host: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ServeData {
|
|
10
|
+
url: string;
|
|
11
|
+
port: number;
|
|
12
|
+
host: string;
|
|
13
|
+
root: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Defaults to loopback so an invocation with no `--host` keeps today's
|
|
17
|
+
* behavior exactly. `--host` exists for an operator who has deliberately
|
|
18
|
+
* decided to put something else (a reverse proxy, a tunnel sharing this
|
|
19
|
+
* process's network namespace) in front and knows what binding wider than
|
|
20
|
+
* loopback exposes — this command still applies no requester filtering of
|
|
21
|
+
* its own regardless of bind address; that judgment is entirely the
|
|
22
|
+
* caller's.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_HOST = "127.0.0.1";
|
|
25
|
+
/**
|
|
26
|
+
* cli-contract spec (local-browsing-surface D5): resolves the moment the
|
|
27
|
+
* listener is ready, so `runCommand()` emits exactly one envelope before
|
|
28
|
+
* any request is served — the listener itself keeps the process alive
|
|
29
|
+
* afterward, with no change to how `run()`/`bin.ts` end.
|
|
30
|
+
*/
|
|
31
|
+
export declare function execute(env: RunEnv, store: Store, flags: ServeFlags): Promise<CommandOutcome<ServeData>>;
|
|
32
|
+
//# sourceMappingURL=serve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,cAAc,CAAC;AAwIxC;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA2B9G"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { createServer } from 'node:http';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { buildLinkResolver } from '../core/browse/link-resolver.js';
|
|
5
|
+
import { escapeHtml, renderNoteBody } from '../core/browse/render.js';
|
|
6
|
+
import { buildRouteTable, publishSlugs } from '../core/browse/routes.js';
|
|
7
|
+
import { readStylesheet, renderShell } from '../core/browse/templates.js';
|
|
8
|
+
import { ExitCode } from '../core/exit-codes.js';
|
|
9
|
+
export const requires = { store: 'required' };
|
|
10
|
+
/**
|
|
11
|
+
* Defaults to loopback so an invocation with no `--host` keeps today's
|
|
12
|
+
* behavior exactly. `--host` exists for an operator who has deliberately
|
|
13
|
+
* decided to put something else (a reverse proxy, a tunnel sharing this
|
|
14
|
+
* process's network namespace) in front and knows what binding wider than
|
|
15
|
+
* loopback exposes — this command still applies no requester filtering of
|
|
16
|
+
* its own regardless of bind address; that judgment is entirely the
|
|
17
|
+
* caller's.
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_HOST = '127.0.0.1';
|
|
20
|
+
const CONTENT_TYPES = {
|
|
21
|
+
'.html': 'text/html; charset=utf-8',
|
|
22
|
+
'.css': 'text/css; charset=utf-8',
|
|
23
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
24
|
+
'.mjs': 'text/javascript; charset=utf-8',
|
|
25
|
+
'.json': 'application/json; charset=utf-8',
|
|
26
|
+
'.svg': 'image/svg+xml',
|
|
27
|
+
'.png': 'image/png',
|
|
28
|
+
'.jpg': 'image/jpeg',
|
|
29
|
+
'.jpeg': 'image/jpeg',
|
|
30
|
+
'.gif': 'image/gif',
|
|
31
|
+
'.webp': 'image/webp',
|
|
32
|
+
'.ico': 'image/x-icon',
|
|
33
|
+
'.txt': 'text/plain; charset=utf-8',
|
|
34
|
+
'.md': 'text/markdown; charset=utf-8',
|
|
35
|
+
'.woff': 'font/woff',
|
|
36
|
+
'.woff2': 'font/woff2',
|
|
37
|
+
};
|
|
38
|
+
function contentTypeFor(filePath) {
|
|
39
|
+
return CONTENT_TYPES[path.extname(filePath).toLowerCase()] ?? 'application/octet-stream';
|
|
40
|
+
}
|
|
41
|
+
/** Requirement: an unbuilt derived artifact reports how to build it, rather than an opaque 404. */
|
|
42
|
+
function buildHint(command) {
|
|
43
|
+
return `<div class="ctxr-build-hint">Not built yet. Run <code>${escapeHtml(command)}</code> and reload.</div>`;
|
|
44
|
+
}
|
|
45
|
+
function renderIndex(table) {
|
|
46
|
+
const notes = [...table.notes.keys()].sort();
|
|
47
|
+
const catalogSections = [...table.catalog.keys()].sort();
|
|
48
|
+
const slugs = publishSlugs(table);
|
|
49
|
+
const listItems = (items, hrefFor) => items.length > 0
|
|
50
|
+
? items.map((item) => `<li><a href="${hrefFor(item)}">${escapeHtml(item)}</a></li>`).join('\n')
|
|
51
|
+
: '<li>none yet</li>';
|
|
52
|
+
return [
|
|
53
|
+
'<h1>contexture</h1>',
|
|
54
|
+
`<p>${notes.length} note(s), ${catalogSections.length} catalog section(s), ${slugs.length} published page(s).</p>`,
|
|
55
|
+
'<h2>Notes</h2>',
|
|
56
|
+
`<ul class="ctxr-index">${listItems(notes, (p) => `/notes/${encodeURI(p)}`)}</ul>`,
|
|
57
|
+
'<h2>Catalog</h2>',
|
|
58
|
+
`<ul class="ctxr-index">${listItems(catalogSections, (id) => `/catalog/${encodeURIComponent(id)}`)}</ul>`,
|
|
59
|
+
'<h2>Graph</h2>',
|
|
60
|
+
'<p><a href="/graph">graph document</a></p>',
|
|
61
|
+
'<h2>Published pages</h2>',
|
|
62
|
+
`<ul class="ctxr-index">${listItems(slugs, (slug) => `/publish/${encodeURIComponent(slug)}/index.html`)}</ul>`,
|
|
63
|
+
].join('\n');
|
|
64
|
+
}
|
|
65
|
+
function send(res, method, status, contentType, body) {
|
|
66
|
+
const buffer = Buffer.isBuffer(body) ? body : Buffer.from(body, 'utf8');
|
|
67
|
+
res.writeHead(status, { 'Content-Type': contentType, 'Content-Length': buffer.length });
|
|
68
|
+
res.end(method === 'HEAD' ? undefined : buffer);
|
|
69
|
+
}
|
|
70
|
+
/** Reads a derived document, rendering `hint` instead of 404ing when it hasn't been built yet. */
|
|
71
|
+
async function readDerivedDocument(absolutePath) {
|
|
72
|
+
try {
|
|
73
|
+
return { text: await readFile(absolutePath, 'utf8') };
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (err.code === 'ENOENT')
|
|
77
|
+
return { hint: true };
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function handleRequest(store, stderr, req, res) {
|
|
82
|
+
const method = req.method ?? 'GET';
|
|
83
|
+
const pathname = decodeURIComponent(new URL(req.url ?? '/', 'http://localhost').pathname);
|
|
84
|
+
stderr.write(`${method} ${pathname}\n`);
|
|
85
|
+
if (method !== 'GET' && method !== 'HEAD') {
|
|
86
|
+
send(res, method, 405, 'text/plain; charset=utf-8', 'method not allowed\n');
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const table = await buildRouteTable(store);
|
|
90
|
+
const resolveLink = buildLinkResolver([...table.notes.values()]);
|
|
91
|
+
if (pathname === '/') {
|
|
92
|
+
send(res, method, 200, 'text/html; charset=utf-8', await renderShell('contexture', renderIndex(table)));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (pathname === '/assets/style.css') {
|
|
96
|
+
send(res, method, 200, 'text/css; charset=utf-8', await readStylesheet());
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (pathname === '/graph') {
|
|
100
|
+
const doc = await readDerivedDocument(table.graphDocumentPath);
|
|
101
|
+
const body = 'hint' in doc ? buildHint('ctxr graph build') : renderNoteBody(doc.text, resolveLink);
|
|
102
|
+
send(res, method, 200, 'text/html; charset=utf-8', await renderShell('graph', body));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (pathname.startsWith('/notes/')) {
|
|
106
|
+
const note = table.notes.get(pathname.slice('/notes/'.length));
|
|
107
|
+
if (!note) {
|
|
108
|
+
send(res, method, 404, 'text/plain; charset=utf-8', 'not found\n');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
send(res, method, 200, 'text/html; charset=utf-8', await renderShell(note.path, renderNoteBody(note.body, resolveLink)));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (pathname.startsWith('/catalog/')) {
|
|
115
|
+
const sectionId = pathname.slice('/catalog/'.length);
|
|
116
|
+
const section = table.catalog.get(sectionId);
|
|
117
|
+
if (!section) {
|
|
118
|
+
send(res, method, 404, 'text/plain; charset=utf-8', 'not found\n');
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const doc = await readDerivedDocument(section.absolutePath);
|
|
122
|
+
const body = 'hint' in doc ? buildHint('ctxr catalog build') : renderNoteBody(doc.text, resolveLink);
|
|
123
|
+
send(res, method, 200, 'text/html; charset=utf-8', await renderShell(sectionId, body));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (pathname.startsWith('/publish/')) {
|
|
127
|
+
const file = table.publishFiles.get(pathname.slice('/publish/'.length));
|
|
128
|
+
if (!file) {
|
|
129
|
+
send(res, method, 404, 'text/plain; charset=utf-8', 'not found\n');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
send(res, method, 200, contentTypeFor(file.absolutePath), await readFile(file.absolutePath));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
send(res, method, 404, 'text/plain; charset=utf-8', 'not found\n');
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* cli-contract spec (local-browsing-surface D5): resolves the moment the
|
|
139
|
+
* listener is ready, so `runCommand()` emits exactly one envelope before
|
|
140
|
+
* any request is served — the listener itself keeps the process alive
|
|
141
|
+
* afterward, with no change to how `run()`/`bin.ts` end.
|
|
142
|
+
*/
|
|
143
|
+
export async function execute(env, store, flags) {
|
|
144
|
+
const server = createServer((req, res) => {
|
|
145
|
+
handleRequest(store, env.io.stderr, req, res).catch((err) => {
|
|
146
|
+
env.io.stderr.write(`serve: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
147
|
+
if (!res.headersSent)
|
|
148
|
+
send(res, req.method ?? 'GET', 500, 'text/plain; charset=utf-8', 'internal error\n');
|
|
149
|
+
else
|
|
150
|
+
res.end();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
const host = flags.host;
|
|
154
|
+
await new Promise((resolve, reject) => {
|
|
155
|
+
server.once('error', reject);
|
|
156
|
+
server.listen(flags.port, host, resolve);
|
|
157
|
+
});
|
|
158
|
+
const address = server.address();
|
|
159
|
+
const port = typeof address === 'object' && address !== null ? address.port : flags.port;
|
|
160
|
+
const url = `http://${host}:${port}/`;
|
|
161
|
+
return {
|
|
162
|
+
exitCode: ExitCode.Ok,
|
|
163
|
+
data: { url, port, host, root: store.root },
|
|
164
|
+
findings: [],
|
|
165
|
+
humanSummary: `serving ${store.root} at ${url}`,
|
|
166
|
+
storeRoot: store.root,
|
|
167
|
+
schemaVersion: store.config.schema_version,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/update.js
CHANGED
|
@@ -10,13 +10,13 @@ export const requires = { store: 'required' };
|
|
|
10
10
|
* touched. Idempotent: a current store reports nothing changed.
|
|
11
11
|
*/
|
|
12
12
|
export async function execute(env, store) {
|
|
13
|
-
const { changed } = await reconcileStore(env, store.root, store.config);
|
|
14
|
-
const adapterFiles = await generateAdapterOutputs(store);
|
|
13
|
+
const { changed, findings } = await reconcileStore(env, store.root, store.config);
|
|
14
|
+
const adapterFiles = await generateAdapterOutputs(env.git, store);
|
|
15
15
|
const all = [...new Set([...changed, ...adapterFiles.filter((f) => f.changed).map((f) => f.path)])];
|
|
16
16
|
return {
|
|
17
17
|
exitCode: ExitCode.Ok,
|
|
18
18
|
data: { changed: all },
|
|
19
|
-
findings
|
|
19
|
+
findings,
|
|
20
20
|
humanSummary: all.length === 0 ? 'Store is already up to date.' : `Updated ${all.length} contexture-owned file(s).`,
|
|
21
21
|
storeRoot: store.root,
|
|
22
22
|
schemaVersion: store.config.schema_version,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAO/D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAO/D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY;IACrD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpG,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;QACtB,QAAQ;QACR,YAAY,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,MAAM,4BAA4B;QACnH,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -30,12 +30,17 @@ export declare const DEFAULT_VISIBILITY_CONTEXT = "private";
|
|
|
30
30
|
*/
|
|
31
31
|
export declare const DEFAULT_DERIVED_PATHS: readonly ['.contexture/cache/'];
|
|
32
32
|
/**
|
|
33
|
-
* harness-portability spec (
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
33
|
+
* harness-portability spec (vendored-craft-skills): the ecosystem's
|
|
34
|
+
* cross-harness canonical skills location — the directory the majority of
|
|
35
|
+
* agent runtimes read natively, with no bridge required. A harness that
|
|
36
|
+
* reads its own branded directory instead (e.g. Claude Code's
|
|
37
|
+
* `.claude/skills/`) gets that directory bridged to this one; see
|
|
38
|
+
* `core/harness/bridge.ts`. A store driven by no auto-discovering harness
|
|
39
|
+
* can still point this anywhere.
|
|
37
40
|
*/
|
|
38
|
-
export declare const DEFAULT_SKILLS_PATH = ".
|
|
41
|
+
export declare const DEFAULT_SKILLS_PATH = ".agents/skills/";
|
|
42
|
+
/** harness-portability spec (vendored-craft-skills): the shipped vendored skill set, installed by default and refreshed by update. */
|
|
43
|
+
export declare const DEFAULT_VENDORED_SKILLS: readonly ['frontend-design'];
|
|
39
44
|
/**
|
|
40
45
|
* harness-portability spec: the guidance directory holding contexture's
|
|
41
46
|
* shipped baseline convention file, the operator's own convention files
|
|
@@ -44,10 +49,21 @@ export declare const DEFAULT_SKILLS_PATH = ".claude/skills/";
|
|
|
44
49
|
* context-organize) the mission document.
|
|
45
50
|
*/
|
|
46
51
|
export declare const DEFAULT_GUIDANCE_PATH = ".contexture/guidance/";
|
|
47
|
-
/** The shipped, contexture-owned baseline
|
|
48
|
-
export declare const
|
|
49
|
-
/**
|
|
50
|
-
|
|
52
|
+
/** The shipped, contexture-owned baseline conventions — never hand-edited; refreshed by `ctxr update` like a skill copy. */
|
|
53
|
+
export declare const DEFAULT_BASELINE_CONVENTIONS_FILE_NAME = "baseline-conventions.md";
|
|
54
|
+
/**
|
|
55
|
+
* The baseline file's pre-rename name. `syncBaselineConventions` removes it
|
|
56
|
+
* when it still carries the managed-owner header, so the rename leaves no
|
|
57
|
+
* orphan — the guidance directory is scanned wholesale, so an orphan would
|
|
58
|
+
* be inlined into AGENTS.md a second time rather than merely sitting unused.
|
|
59
|
+
*/
|
|
60
|
+
export declare const LEGACY_BASELINE_CONVENTION_FILE_NAME = "baseline-convention.md";
|
|
61
|
+
/**
|
|
62
|
+
* The operator-authored conventions file seeded at init: this store's house
|
|
63
|
+
* rules, layered on the shipped baseline and winning where the two speak to
|
|
64
|
+
* the same thing.
|
|
65
|
+
*/
|
|
66
|
+
export declare const DEFAULT_HOUSE_CONVENTIONS_FILE_NAME = "house-conventions.md";
|
|
51
67
|
/** context-organize spec: the store's standing current-state document's filename, under the guidance directory. */
|
|
52
68
|
export declare const DEFAULT_MISSION_FILE_NAME = "mission.md";
|
|
53
69
|
/** context-organize spec: `organize.mission_path`'s shipped default — every store gets a mission document from `init` onward, seeded there. */
|
|
@@ -69,14 +85,14 @@ export declare const DEFAULT_GRAPH_SETTINGS: {
|
|
|
69
85
|
export declare const DEFAULT_WORKTREES_PATH = ".worktrees/";
|
|
70
86
|
/** Branch names for session worktrees are prefixed so they're recognizable and sweep-safe. */
|
|
71
87
|
export declare const DEFAULT_SESSION_BRANCH_PREFIX = "session/";
|
|
72
|
-
/** write-lifecycle spec: worktrees are ctxr-owned (not externally provided) unless a store opts in. */
|
|
73
|
-
export declare const DEFAULT_WORKSPACES_EXTERNAL = false;
|
|
74
88
|
/** write-lifecycle spec: pre-commit's diff-size ceiling, in total changed lines. */
|
|
75
89
|
export declare const DEFAULT_DIFF_SIZE_CEILING_LINES = 2000;
|
|
76
90
|
/** context-catalog spec: where per-section catalog files live — tracked (never gitignored), since glosses are authored. */
|
|
77
91
|
export declare const DEFAULT_CATALOG_PATH = ".contexture/catalog/";
|
|
78
92
|
/** context-catalog spec: a section exceeding this triggers a failing doctor check, not a silent slowdown. */
|
|
79
93
|
export declare const DEFAULT_CATALOG_SECTION_MAX_BYTES: number;
|
|
94
|
+
/** publish spec: where published pages live — tracked, authored-but-tool-owned, excluded from retrieval like the catalog and skill pack. */
|
|
95
|
+
export declare const DEFAULT_PUBLISH_PATH = ".contexture/publish/";
|
|
80
96
|
/** disclosure-policy spec: v1 ships with no audiences pre-declared internal, and no hard walls — an explicit, empty starting point the operator opts into. */
|
|
81
97
|
export declare const DEFAULT_INTERNAL_AUDIENCES: readonly string[];
|
|
82
98
|
export declare const DEFAULT_HARD_WALLS: readonly HardWallConfig[];
|
|
@@ -84,15 +100,21 @@ export declare const DEFAULT_HARD_WALLS: readonly HardWallConfig[];
|
|
|
84
100
|
export declare const DEFAULT_INBOX_PATH = "inbox/";
|
|
85
101
|
/** store-primitives-from-migration-audit spec (D2): the shipped tracking-parameter list source check strips before comparing URL identities. */
|
|
86
102
|
export declare const DEFAULT_TRACKING_PARAMS: string[];
|
|
87
|
-
/**
|
|
88
|
-
|
|
103
|
+
/**
|
|
104
|
+
* context-organize spec: archive's destination, decoupled from any taxonomy
|
|
105
|
+
* layer name. This is the fallback for a taxonomy that declares none of its
|
|
106
|
+
* own — a shipped profile with a retirement layer (PARA's Archives) supplies
|
|
107
|
+
* its `archiveDestination` at init instead, so a PARA store is never born
|
|
108
|
+
* pointing at a directory its own taxonomy doesn't declare.
|
|
109
|
+
*/
|
|
110
|
+
export declare const DEFAULT_ARCHIVE_DESTINATION = "archive/";
|
|
89
111
|
/** store-primitives-from-migration-audit spec (D4): grace period, in days, before a stale rollup is reported. */
|
|
90
112
|
export declare const DEFAULT_ROLLUP_STALE_DAYS = 7;
|
|
91
113
|
/**
|
|
92
|
-
* adapters spec: init registers
|
|
93
|
-
* out-of-the-box UX (a
|
|
94
|
-
*
|
|
95
|
-
*
|
|
114
|
+
* adapters spec: init registers the shipped builtin by default, so
|
|
115
|
+
* out-of-the-box UX (a generated CLAUDE.md) keeps working without the
|
|
116
|
+
* operator hand-writing config — it is just as removable from this list as
|
|
117
|
+
* it was addable.
|
|
96
118
|
*/
|
|
97
119
|
export declare const DEFAULT_ADAPTERS: readonly AdapterDeclaration[];
|
|
98
120
|
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,SAAS,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,YAAI,oBAAoB,CAAU,CAAC;AAErE
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,SAAS,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,YAAI,oBAAoB,CAAU,CAAC;AAErE;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,sIAAsI;AACtI,eAAO,MAAM,uBAAuB,YAAI,iBAAiB,CAAU,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,4HAA4H;AAC5H,eAAO,MAAM,sCAAsC,4BAA4B,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,2BAA2B,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,yBAAyB,CAAC;AAE1E,mHAAmH;AACnH,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAEtD,+IAA+I;AAC/I,eAAO,MAAM,oBAAoB,oCAAyD,CAAC;AAE3F,yIAAyI;AACzI,eAAO,MAAM,4BAA4B,QAAY,CAAC;AAEtD,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,YAAI,cAAc,CAAU,CAAC;AAE/D,oHAAoH;AACpH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAO,CAAC;AAEvD,8HAA8H;AAC9H,eAAO,MAAM,sBAAsB;IACjC,aAAa;IACb,OAAO;IACP,UAAU;IACV,sBAAsB,EAAQ,MAAM,EAAE;CACvC,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AAEpD,8FAA8F;AAC9F,eAAO,MAAM,6BAA6B,aAAa,CAAC;AAGxD,oFAAoF;AACpF,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD,2HAA2H;AAC3H,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,6GAA6G;AAC7G,eAAO,MAAM,iCAAiC,QAAY,CAAC;AAE3D,4IAA4I;AAC5I,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,8JAA8J;AAC9J,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAAO,CAAC;AAChE,eAAO,MAAM,kBAAkB,EAAE,SAAS,cAAc,EAAO,CAAC;AAEhE,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,gJAAgJ;AAChJ,eAAO,MAAM,uBAAuB,UAA6F,CAAC;AAElI;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,aAAa,CAAC;AAEtD,iHAAiH;AACjH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,kBAAkB,EAAwD,CAAC"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -29,12 +29,17 @@ export const DEFAULT_VISIBILITY_CONTEXT = 'private';
|
|
|
29
29
|
*/
|
|
30
30
|
export const DEFAULT_DERIVED_PATHS = ['.contexture/cache/'];
|
|
31
31
|
/**
|
|
32
|
-
* harness-portability spec (
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
32
|
+
* harness-portability spec (vendored-craft-skills): the ecosystem's
|
|
33
|
+
* cross-harness canonical skills location — the directory the majority of
|
|
34
|
+
* agent runtimes read natively, with no bridge required. A harness that
|
|
35
|
+
* reads its own branded directory instead (e.g. Claude Code's
|
|
36
|
+
* `.claude/skills/`) gets that directory bridged to this one; see
|
|
37
|
+
* `core/harness/bridge.ts`. A store driven by no auto-discovering harness
|
|
38
|
+
* can still point this anywhere.
|
|
36
39
|
*/
|
|
37
|
-
export const DEFAULT_SKILLS_PATH = '.
|
|
40
|
+
export const DEFAULT_SKILLS_PATH = '.agents/skills/';
|
|
41
|
+
/** harness-portability spec (vendored-craft-skills): the shipped vendored skill set, installed by default and refreshed by update. */
|
|
42
|
+
export const DEFAULT_VENDORED_SKILLS = ['frontend-design'];
|
|
38
43
|
/**
|
|
39
44
|
* harness-portability spec: the guidance directory holding contexture's
|
|
40
45
|
* shipped baseline convention file, the operator's own convention files
|
|
@@ -43,10 +48,21 @@ export const DEFAULT_SKILLS_PATH = '.claude/skills/';
|
|
|
43
48
|
* context-organize) the mission document.
|
|
44
49
|
*/
|
|
45
50
|
export const DEFAULT_GUIDANCE_PATH = '.contexture/guidance/';
|
|
46
|
-
/** The shipped, contexture-owned baseline
|
|
47
|
-
export const
|
|
48
|
-
/**
|
|
49
|
-
|
|
51
|
+
/** The shipped, contexture-owned baseline conventions — never hand-edited; refreshed by `ctxr update` like a skill copy. */
|
|
52
|
+
export const DEFAULT_BASELINE_CONVENTIONS_FILE_NAME = 'baseline-conventions.md';
|
|
53
|
+
/**
|
|
54
|
+
* The baseline file's pre-rename name. `syncBaselineConventions` removes it
|
|
55
|
+
* when it still carries the managed-owner header, so the rename leaves no
|
|
56
|
+
* orphan — the guidance directory is scanned wholesale, so an orphan would
|
|
57
|
+
* be inlined into AGENTS.md a second time rather than merely sitting unused.
|
|
58
|
+
*/
|
|
59
|
+
export const LEGACY_BASELINE_CONVENTION_FILE_NAME = 'baseline-convention.md';
|
|
60
|
+
/**
|
|
61
|
+
* The operator-authored conventions file seeded at init: this store's house
|
|
62
|
+
* rules, layered on the shipped baseline and winning where the two speak to
|
|
63
|
+
* the same thing.
|
|
64
|
+
*/
|
|
65
|
+
export const DEFAULT_HOUSE_CONVENTIONS_FILE_NAME = 'house-conventions.md';
|
|
50
66
|
/** context-organize spec: the store's standing current-state document's filename, under the guidance directory. */
|
|
51
67
|
export const DEFAULT_MISSION_FILE_NAME = 'mission.md';
|
|
52
68
|
/** context-organize spec: `organize.mission_path`'s shipped default — every store gets a mission document from `init` onward, seeded there. */
|
|
@@ -68,14 +84,14 @@ export const DEFAULT_GRAPH_SETTINGS = {
|
|
|
68
84
|
export const DEFAULT_WORKTREES_PATH = '.worktrees/';
|
|
69
85
|
/** Branch names for session worktrees are prefixed so they're recognizable and sweep-safe. */
|
|
70
86
|
export const DEFAULT_SESSION_BRANCH_PREFIX = 'session/';
|
|
71
|
-
/** write-lifecycle spec: worktrees are ctxr-owned (not externally provided) unless a store opts in. */
|
|
72
|
-
export const DEFAULT_WORKSPACES_EXTERNAL = false;
|
|
73
87
|
/** write-lifecycle spec: pre-commit's diff-size ceiling, in total changed lines. */
|
|
74
88
|
export const DEFAULT_DIFF_SIZE_CEILING_LINES = 2000;
|
|
75
89
|
/** context-catalog spec: where per-section catalog files live — tracked (never gitignored), since glosses are authored. */
|
|
76
90
|
export const DEFAULT_CATALOG_PATH = '.contexture/catalog/';
|
|
77
91
|
/** context-catalog spec: a section exceeding this triggers a failing doctor check, not a silent slowdown. */
|
|
78
92
|
export const DEFAULT_CATALOG_SECTION_MAX_BYTES = 32 * 1024;
|
|
93
|
+
/** publish spec: where published pages live — tracked, authored-but-tool-owned, excluded from retrieval like the catalog and skill pack. */
|
|
94
|
+
export const DEFAULT_PUBLISH_PATH = '.contexture/publish/';
|
|
79
95
|
/** disclosure-policy spec: v1 ships with no audiences pre-declared internal, and no hard walls — an explicit, empty starting point the operator opts into. */
|
|
80
96
|
export const DEFAULT_INTERNAL_AUDIENCES = [];
|
|
81
97
|
export const DEFAULT_HARD_WALLS = [];
|
|
@@ -83,18 +99,21 @@ export const DEFAULT_HARD_WALLS = [];
|
|
|
83
99
|
export const DEFAULT_INBOX_PATH = 'inbox/';
|
|
84
100
|
/** store-primitives-from-migration-audit spec (D2): the shipped tracking-parameter list source check strips before comparing URL identities. */
|
|
85
101
|
export const DEFAULT_TRACKING_PARAMS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid'];
|
|
86
|
-
/**
|
|
87
|
-
|
|
102
|
+
/**
|
|
103
|
+
* context-organize spec: archive's destination, decoupled from any taxonomy
|
|
104
|
+
* layer name. This is the fallback for a taxonomy that declares none of its
|
|
105
|
+
* own — a shipped profile with a retirement layer (PARA's Archives) supplies
|
|
106
|
+
* its `archiveDestination` at init instead, so a PARA store is never born
|
|
107
|
+
* pointing at a directory its own taxonomy doesn't declare.
|
|
108
|
+
*/
|
|
109
|
+
export const DEFAULT_ARCHIVE_DESTINATION = 'archive/';
|
|
88
110
|
/** store-primitives-from-migration-audit spec (D4): grace period, in days, before a stale rollup is reported. */
|
|
89
111
|
export const DEFAULT_ROLLUP_STALE_DAYS = 7;
|
|
90
112
|
/**
|
|
91
|
-
* adapters spec: init registers
|
|
92
|
-
* out-of-the-box UX (a
|
|
93
|
-
*
|
|
94
|
-
*
|
|
113
|
+
* adapters spec: init registers the shipped builtin by default, so
|
|
114
|
+
* out-of-the-box UX (a generated CLAUDE.md) keeps working without the
|
|
115
|
+
* operator hand-writing config — it is just as removable from this list as
|
|
116
|
+
* it was addable.
|
|
95
117
|
*/
|
|
96
|
-
export const DEFAULT_ADAPTERS = [
|
|
97
|
-
{ id: 'github', kind: 'forge' },
|
|
98
|
-
{ id: 'claude-code', kind: 'harness-generation' },
|
|
99
|
-
];
|
|
118
|
+
export const DEFAULT_ADAPTERS = [{ id: 'claude-code', kind: 'harness-generation' }];
|
|
100
119
|
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAEtD,gFAAgF;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,oBAAoB,CAAU,CAAC;AAErE
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAEtD,gFAAgF;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,oBAAoB,CAAU,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,sIAAsI;AACtI,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,iBAAiB,CAAU,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE7D,4HAA4H;AAC5H,MAAM,CAAC,MAAM,sCAAsC,GAAG,yBAAyB,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,wBAAwB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,sBAAsB,CAAC;AAE1E,mHAAmH;AACnH,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAEtD,+IAA+I;AAC/I,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;AAE3F,yIAAyI;AACzI,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,cAAc,CAAU,CAAC;AAE/D,oHAAoH;AACpH,MAAM,CAAC,MAAM,iBAAiB,GAAsB,EAAE,CAAC;AAEvD,8HAA8H;AAC9H,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,EAAE;IACd,sBAAsB,EAAE,EAAc;CACvC,CAAC;AAEF,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AAEpD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAC;AAGxD,oFAAoF;AACpF,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,2HAA2H;AAC3H,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D,6GAA6G;AAC7G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3D,4IAA4I;AAC5I,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D,8JAA8J;AAC9J,MAAM,CAAC,MAAM,0BAA0B,GAAsB,EAAE,CAAC;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;AAEhE,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,gJAAgJ;AAChJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAElI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC;AAEtD,iHAAiH;AACjH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC"}
|