ctxr-cli 0.5.0 → 0.7.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 +38 -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 +6 -4
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +7 -5
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/catalog-show.d.ts +0 -1
- package/dist/commands/catalog-show.d.ts.map +1 -1
- package/dist/commands/catalog-show.js +1 -1
- package/dist/commands/catalog-show.js.map +1 -1
- package/dist/commands/graph-query.d.ts +2 -11
- package/dist/commands/graph-query.d.ts.map +1 -1
- package/dist/commands/graph-query.js +11 -14
- package/dist/commands/graph-query.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 +82 -21
- 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 +112 -0
- package/dist/commands/publish-check.js.map +1 -0
- package/dist/commands/publish-gather.d.ts +27 -0
- package/dist/commands/publish-gather.d.ts.map +1 -0
- package/dist/commands/publish-gather.js +73 -0
- package/dist/commands/publish-gather.js.map +1 -0
- package/dist/commands/publish-new.d.ts +19 -0
- package/dist/commands/publish-new.d.ts.map +1 -0
- package/dist/commands/publish-new.js +108 -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 +151 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/session-capture.d.ts.map +1 -1
- package/dist/commands/session-capture.js +0 -2
- package/dist/commands/session-capture.js.map +1 -1
- package/dist/commands/update.js +3 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/config/defaults.d.ts +49 -44
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +49 -47
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +53 -52
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +84 -62
- package/dist/config/schema.js.map +1 -1
- package/dist/core/agents-doc.d.ts +9 -0
- package/dist/core/agents-doc.d.ts.map +1 -1
- package/dist/core/agents-doc.js +31 -16
- package/dist/core/agents-doc.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/nav.d.ts +10 -0
- package/dist/core/browse/nav.d.ts.map +1 -0
- package/dist/core/browse/nav.js +101 -0
- package/dist/core/browse/nav.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 +40 -0
- package/dist/core/browse/routes.d.ts.map +1 -0
- package/dist/core/browse/routes.js +68 -0
- package/dist/core/browse/routes.js.map +1 -0
- package/dist/core/browse/templates.d.ts +13 -0
- package/dist/core/browse/templates.d.ts.map +1 -0
- package/dist/core/browse/templates.js +39 -0
- package/dist/core/browse/templates.js.map +1 -0
- package/dist/core/browse/tree.d.ts +33 -0
- package/dist/core/browse/tree.d.ts.map +1 -0
- package/dist/core/browse/tree.js +53 -0
- package/dist/core/browse/tree.js.map +1 -0
- package/dist/core/catalog/build.d.ts +1 -1
- package/dist/core/catalog/build.d.ts.map +1 -1
- package/dist/core/catalog/build.js +1 -2
- package/dist/core/catalog/build.js.map +1 -1
- package/dist/core/catalog/model.d.ts +2 -0
- package/dist/core/catalog/model.d.ts.map +1 -1
- package/dist/core/catalog/model.js +2 -1
- package/dist/core/catalog/model.js.map +1 -1
- 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/manifest.d.ts.map +1 -1
- package/dist/core/checks/manifest.js +0 -5
- package/dist/core/checks/manifest.js.map +1 -1
- package/dist/core/checks/organize-checks.d.ts +10 -3
- package/dist/core/checks/organize-checks.d.ts.map +1 -1
- package/dist/core/checks/organize-checks.js +14 -5
- package/dist/core/checks/organize-checks.js.map +1 -1
- package/dist/core/checks/types.d.ts +1 -1
- package/dist/core/convention-doc.d.ts +21 -19
- package/dist/core/convention-doc.d.ts.map +1 -1
- package/dist/core/convention-doc.js +48 -62
- 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/errors.d.ts +31 -44
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +81 -128
- package/dist/core/errors.js.map +1 -1
- package/dist/core/exit-codes.d.ts +7 -5
- package/dist/core/exit-codes.d.ts.map +1 -1
- package/dist/core/exit-codes.js +7 -5
- package/dist/core/exit-codes.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/ingest/identity.d.ts +4 -4
- package/dist/core/ingest/identity.js +4 -4
- 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/add-explanation-craft-skill.d.ts +26 -0
- package/dist/core/migrations/add-explanation-craft-skill.d.ts.map +1 -0
- package/dist/core/migrations/add-explanation-craft-skill.js +94 -0
- package/dist/core/migrations/add-explanation-craft-skill.js.map +1 -0
- 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-access-axes.d.ts +24 -0
- package/dist/core/migrations/drop-access-axes.d.ts.map +1 -0
- package/dist/core/migrations/drop-access-axes.js +54 -0
- package/dist/core/migrations/drop-access-axes.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 +11 -1
- package/dist/core/migrations/registry.d.ts.map +1 -1
- package/dist/core/migrations/registry.js +19 -3
- package/dist/core/migrations/registry.js.map +1 -1
- package/dist/core/notes/list.d.ts +1 -12
- 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/records.d.ts +4 -5
- package/dist/core/records.d.ts.map +1 -1
- package/dist/core/records.js +0 -2
- package/dist/core/records.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 +42 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +159 -31
- 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 +69 -101
- 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 -3
- package/templates/conventions/baseline-conventions.md +27 -0
- 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 +18 -0
- package/templates/serve/style.css +163 -0
- package/templates/skills/ctxr-land.md +32 -18
- package/templates/skills/ctxr-organize-audit.md +2 -10
- package/templates/skills/ctxr-placement.md +6 -24
- package/templates/skills/ctxr-publish.md +84 -0
- package/templates/skills/ctxr-session-capture.md +43 -3
- package/templates/skills/ctxr-session-lifecycle.md +20 -1
- package/templates/skills/ctxr-submit.md +15 -11
- package/templates/vendor/eli5/LICENSE.txt +21 -0
- package/templates/vendor/eli5/SKILL.md +116 -0
- package/templates/vendor/eli5/provenance.json +8 -0
- 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/check.d.ts +0 -30
- package/dist/commands/check.d.ts.map +0 -1
- package/dist/commands/check.js +0 -70
- package/dist/commands/check.js.map +0 -1
- package/dist/commands/note-resolve.d.ts +0 -14
- package/dist/commands/note-resolve.d.ts.map +0 -1
- package/dist/commands/note-resolve.js +0 -24
- package/dist/commands/note-resolve.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/core/checks/disclosure-checks.d.ts +0 -4
- package/dist/core/checks/disclosure-checks.d.ts.map +0 -1
- package/dist/core/checks/disclosure-checks.js +0 -24
- package/dist/core/checks/disclosure-checks.js.map +0 -1
- package/dist/core/disclosure/leak-scan.d.ts +0 -19
- package/dist/core/disclosure/leak-scan.d.ts.map +0 -1
- package/dist/core/disclosure/leak-scan.js +0 -31
- package/dist/core/disclosure/leak-scan.js.map +0 -1
- package/dist/core/disclosure/model.d.ts +0 -18
- package/dist/core/disclosure/model.d.ts.map +0 -1
- package/dist/core/disclosure/model.js +0 -45
- package/dist/core/disclosure/model.js.map +0 -1
- package/dist/core/graph/visibility-filter.d.ts +0 -13
- package/dist/core/graph/visibility-filter.d.ts.map +0 -1
- package/dist/core/graph/visibility-filter.js +0 -26
- package/dist/core/graph/visibility-filter.js.map +0 -1
- package/dist/core/migrations/rename-visibility-field.d.ts +0 -3
- package/dist/core/migrations/rename-visibility-field.d.ts.map +0 -1
- package/dist/core/migrations/rename-visibility-field.js +0 -62
- package/dist/core/migrations/rename-visibility-field.js.map +0 -1
- package/dist/core/notes/checks.d.ts +0 -20
- package/dist/core/notes/checks.d.ts.map +0 -1
- package/dist/core/notes/checks.js +0 -58
- package/dist/core/notes/checks.js.map +0 -1
- package/dist/core/notes/visibility.d.ts +0 -26
- package/dist/core/notes/visibility.d.ts.map +0 -1
- package/dist/core/notes/visibility.js +0 -41
- package/dist/core/notes/visibility.js.map +0 -1
- package/templates/conventions/baseline-convention.md +0 -60
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/adapters/forge/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,uBAAuB,EAAoB,MAAM,YAAY,CAAC;AAMrH,+JAA+J;AAC/J,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAW9E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB,CAW5E;AAWD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAkDhC,CAAC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { execFile } from 'node:child_process';
|
|
2
|
-
import { promisify } from 'node:util';
|
|
3
|
-
const execFileAsync = promisify(execFile);
|
|
4
|
-
const PR_NUMBER_RE = /\/pull\/(\d+)/;
|
|
5
|
-
/** GitHub's own vocabulary, normalized to the adapter interface's small unions — kept pure and exported so tests exercise the mapping without a subprocess. */
|
|
6
|
-
export function mapPullRequestState(ghState) {
|
|
7
|
-
switch (ghState) {
|
|
8
|
-
case 'OPEN':
|
|
9
|
-
return 'open';
|
|
10
|
-
case 'MERGED':
|
|
11
|
-
return 'merged';
|
|
12
|
-
case 'CLOSED':
|
|
13
|
-
return 'closed';
|
|
14
|
-
default:
|
|
15
|
-
throw new Error(`Internal error: unrecognized GitHub pull request state "${ghState}".`);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export function mapMergeability(ghMergeable) {
|
|
19
|
-
switch (ghMergeable) {
|
|
20
|
-
case 'MERGEABLE':
|
|
21
|
-
return 'mergeable';
|
|
22
|
-
case 'CONFLICTING':
|
|
23
|
-
return 'conflicting';
|
|
24
|
-
case 'UNKNOWN':
|
|
25
|
-
return 'unknown';
|
|
26
|
-
default:
|
|
27
|
-
throw new Error(`Internal error: unrecognized GitHub mergeable status "${ghMergeable}".`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* The reference forge adapter, shelling out to `gh` (same tool, same
|
|
32
|
-
* pattern as `git` itself) rather than a token-based REST client — simpler
|
|
33
|
-
* to implement correctly, and consistent with how every other git-adjacent
|
|
34
|
-
* operation in this codebase is invoked.
|
|
35
|
-
*/
|
|
36
|
-
export const githubForgeAdapter = {
|
|
37
|
-
id: 'github',
|
|
38
|
-
kind: 'forge',
|
|
39
|
-
interfaceVersion: 2,
|
|
40
|
-
async isAvailable(cwd) {
|
|
41
|
-
try {
|
|
42
|
-
// `gh auth status` alone only proves SOME host has stored credentials —
|
|
43
|
-
// it says nothing about whether THIS repo's remote is even a GitHub
|
|
44
|
-
// remote. `gh repo view` fails unless the current repo's remote
|
|
45
|
-
// resolves to a real, reachable GitHub repository, which is the
|
|
46
|
-
// actual question `session submit` needs answered.
|
|
47
|
-
await execFileAsync('gh', ['repo', 'view'], { cwd });
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
async openPullRequest(input) {
|
|
55
|
-
const { stdout } = await execFileAsync('gh', ['pr', 'create', '--head', input.branch, '--base', input.baseBranch, '--title', input.title, '--body', input.body], { cwd: input.cwd });
|
|
56
|
-
const url = stdout.trim();
|
|
57
|
-
const match = PR_NUMBER_RE.exec(url);
|
|
58
|
-
return { url, number: match?.[1] ? Number(match[1]) : null };
|
|
59
|
-
},
|
|
60
|
-
async pullRequest(cwd, ref) {
|
|
61
|
-
const { stdout } = await execFileAsync('gh', ['pr', 'view', ref, '--json', 'number,url,title,state,mergeable,headRefName'], { cwd });
|
|
62
|
-
const data = JSON.parse(stdout);
|
|
63
|
-
return {
|
|
64
|
-
number: data.number,
|
|
65
|
-
url: data.url,
|
|
66
|
-
title: data.title,
|
|
67
|
-
state: mapPullRequestState(data.state),
|
|
68
|
-
mergeable: mapMergeability(data.mergeable),
|
|
69
|
-
headBranch: data.headRefName,
|
|
70
|
-
};
|
|
71
|
-
},
|
|
72
|
-
async mergePullRequest(cwd, number, method) {
|
|
73
|
-
await execFileAsync('gh', ['pr', 'merge', String(number), `--${method}`], { cwd });
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=github.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/adapters/forge/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { Adapter } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* write-lifecycle/adapters spec: the forge adapter interface — one of the
|
|
4
|
-
* three v1 adapter kinds. `isAvailable` is what lets `session submit`
|
|
5
|
-
* degrade to manual-PR instructions rather than failing when no forge is
|
|
6
|
-
* configured or reachable.
|
|
7
|
-
*/
|
|
8
|
-
export interface OpenPullRequestInput {
|
|
9
|
-
cwd: string;
|
|
10
|
-
branch: string;
|
|
11
|
-
baseBranch: string;
|
|
12
|
-
title: string;
|
|
13
|
-
body: string;
|
|
14
|
-
}
|
|
15
|
-
export interface OpenPullRequestResult {
|
|
16
|
-
url: string;
|
|
17
|
-
number: number | null;
|
|
18
|
-
}
|
|
19
|
-
/** session-submit-and-land spec (D5): the forge's own vocabulary, normalized to one small union per axis. */
|
|
20
|
-
export type PullRequestLifecycleState = 'open' | 'merged' | 'closed';
|
|
21
|
-
export type PullRequestMergeability = 'mergeable' | 'conflicting' | 'unknown';
|
|
22
|
-
export type MergeMethod = 'squash' | 'merge' | 'rebase';
|
|
23
|
-
export interface PullRequestState {
|
|
24
|
-
number: number;
|
|
25
|
-
url: string;
|
|
26
|
-
title: string;
|
|
27
|
-
state: PullRequestLifecycleState;
|
|
28
|
-
mergeable: PullRequestMergeability;
|
|
29
|
-
headBranch: string;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* session-submit-and-land spec (D5): interface version 2 — `pullRequest`
|
|
33
|
-
* and `mergePullRequest` join availability and pull-request opening, so
|
|
34
|
-
* `ctxr session land` can read a pull request's state and merge it. A v1
|
|
35
|
-
* forge adapter (this interface's prior shape) cannot land; the adapters
|
|
36
|
-
* capability's compatibility check reports that mismatch before any session
|
|
37
|
-
* command relies on it.
|
|
38
|
-
*/
|
|
39
|
-
export interface ForgeAdapter extends Adapter<'forge'> {
|
|
40
|
-
isAvailable(cwd: string): Promise<boolean>;
|
|
41
|
-
openPullRequest(input: OpenPullRequestInput): Promise<OpenPullRequestResult>;
|
|
42
|
-
/** `ref` is a branch name or a pull-request number as a string; either resolves the same pull request. */
|
|
43
|
-
pullRequest(cwd: string, ref: string): Promise<PullRequestState>;
|
|
44
|
-
mergePullRequest(cwd: string, number: number, method: MergeMethod): Promise<void>;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/forge/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,6GAA6G;AAC7G,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACrE,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAE9E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,uBAAuB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,OAAO,CAAC;IACpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7E,0GAA0G;IAC1G,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjE,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/forge/types.ts"],"names":[],"mappings":""}
|
package/dist/commands/check.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { CommandOutcome, CommandRequires } from '../core/command.js';
|
|
2
|
-
import type { DisclosureRung, 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 CheckFlags {
|
|
8
|
-
path: string;
|
|
9
|
-
audience?: string;
|
|
10
|
-
scan?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface CheckData {
|
|
13
|
-
path: string;
|
|
14
|
-
audience?: string;
|
|
15
|
-
verdict?: DisclosureVerdict;
|
|
16
|
-
rung?: DisclosureRung;
|
|
17
|
-
leaks?: LeakFinding[];
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* disclosure-policy spec: the tri-state ALLOW/DENY/ASK verdict, each with
|
|
21
|
-
* its own documented exit code (cli-contract's reserved 4/5), printing the
|
|
22
|
-
* rung that produced it so a script or a human can see WHY, not just WHAT.
|
|
23
|
-
*
|
|
24
|
-
* store-primitives-from-migration-audit spec (D3): `--scan` is a second,
|
|
25
|
-
* independent mode — the same leak scan `ctxr lint` runs, for one note —
|
|
26
|
-
* and does not require `--audience` (a leak isn't about one requesting
|
|
27
|
-
* audience; it's about every configured marker context at once).
|
|
28
|
-
*/
|
|
29
|
-
export declare function execute(env: RunEnv, store: Store, flags: CheckFlags): Promise<CommandOutcome<CheckData>>;
|
|
30
|
-
//# sourceMappingURL=check.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErF,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK7C,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,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAaD;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA6C9G"}
|
package/dist/commands/check.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { evaluateDisclosure } from '../core/disclosure/model.js';
|
|
3
|
-
import { scanNoteForLeaks } from '../core/disclosure/leak-scan.js';
|
|
4
|
-
import { CheckAudienceRequiredError, NoteNotFoundError } from '../core/errors.js';
|
|
5
|
-
import { ExitCode } from '../core/exit-codes.js';
|
|
6
|
-
import { parseNote } from '../core/notes/parse.js';
|
|
7
|
-
export const requires = { store: 'required' };
|
|
8
|
-
const VERDICT_EXIT_CODE = {
|
|
9
|
-
allow: ExitCode.Ok,
|
|
10
|
-
deny: ExitCode.DisclosureDeny,
|
|
11
|
-
ask: ExitCode.DisclosureAsk,
|
|
12
|
-
};
|
|
13
|
-
function toStoreRelativePath(env, store, givenPath) {
|
|
14
|
-
const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
|
|
15
|
-
return path.relative(store.root, absolute).split(path.sep).join('/');
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* disclosure-policy spec: the tri-state ALLOW/DENY/ASK verdict, each with
|
|
19
|
-
* its own documented exit code (cli-contract's reserved 4/5), printing the
|
|
20
|
-
* rung that produced it so a script or a human can see WHY, not just WHAT.
|
|
21
|
-
*
|
|
22
|
-
* store-primitives-from-migration-audit spec (D3): `--scan` is a second,
|
|
23
|
-
* independent mode — the same leak scan `ctxr lint` runs, for one note —
|
|
24
|
-
* and does not require `--audience` (a leak isn't about one requesting
|
|
25
|
-
* audience; it's about every configured marker context at once).
|
|
26
|
-
*/
|
|
27
|
-
export async function execute(env, store, flags) {
|
|
28
|
-
const relativePath = toStoreRelativePath(env, store, flags.path);
|
|
29
|
-
const absolutePath = path.join(store.root, relativePath);
|
|
30
|
-
let note;
|
|
31
|
-
try {
|
|
32
|
-
note = await parseNote(absolutePath, relativePath);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
if (err.code === 'ENOENT')
|
|
36
|
-
throw new NoteNotFoundError(relativePath);
|
|
37
|
-
throw err;
|
|
38
|
-
}
|
|
39
|
-
if (flags.scan) {
|
|
40
|
-
const leaks = scanNoteForLeaks(store.config, note);
|
|
41
|
-
const findings = leaks.map((leak) => ({
|
|
42
|
-
code: 'disclosure.leak',
|
|
43
|
-
severity: 'warning',
|
|
44
|
-
message: `"${leak.path}" matches a marker for context "${leak.context}", which cannot see this note: "${leak.matchedText}".`,
|
|
45
|
-
subject: leak.path,
|
|
46
|
-
details: { context: leak.context, pattern: leak.pattern, matchedText: leak.matchedText },
|
|
47
|
-
}));
|
|
48
|
-
return {
|
|
49
|
-
exitCode: leaks.length > 0 ? ExitCode.CheckFailed : ExitCode.Ok,
|
|
50
|
-
data: { path: relativePath, leaks },
|
|
51
|
-
findings,
|
|
52
|
-
humanSummary: leaks.length > 0 ? `${relativePath}: ${leaks.length} leak(s) found.` : `${relativePath}: no leaks found.`,
|
|
53
|
-
storeRoot: store.root,
|
|
54
|
-
schemaVersion: store.config.schema_version,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (!flags.audience) {
|
|
58
|
-
throw new CheckAudienceRequiredError();
|
|
59
|
-
}
|
|
60
|
-
const { verdict, rung } = evaluateDisclosure(store.config, note, flags.audience);
|
|
61
|
-
return {
|
|
62
|
-
exitCode: VERDICT_EXIT_CODE[verdict],
|
|
63
|
-
data: { path: relativePath, audience: flags.audience, verdict, rung },
|
|
64
|
-
findings: [],
|
|
65
|
-
humanSummary: `${relativePath} for audience "${flags.audience}": ${verdict.toUpperCase()} (rung: ${rung})`,
|
|
66
|
-
storeRoot: store.root,
|
|
67
|
-
schemaVersion: store.config.schema_version,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
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 NoteResolveFlags {
|
|
6
|
-
path: string;
|
|
7
|
-
}
|
|
8
|
-
export interface NoteResolveData {
|
|
9
|
-
path: string;
|
|
10
|
-
visibility: string;
|
|
11
|
-
reason: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function execute(env: RunEnv, store: Store, flags: NoteResolveFlags): Promise<CommandOutcome<NoteResolveData>>;
|
|
14
|
-
//# sourceMappingURL=note-resolve.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"note-resolve.d.ts","sourceRoot":"","sources":["../../src/commands/note-resolve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAc1C"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { ExitCode } from '../core/exit-codes.js';
|
|
3
|
-
import { parseNote } from '../core/notes/parse.js';
|
|
4
|
-
import { resolveVisibility } from '../core/notes/visibility.js';
|
|
5
|
-
export const requires = { store: 'required' };
|
|
6
|
-
function toStoreRelativePath(env, store, givenPath) {
|
|
7
|
-
const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
|
|
8
|
-
return path.relative(store.root, absolute).split(path.sep).join('/');
|
|
9
|
-
}
|
|
10
|
-
export async function execute(env, store, flags) {
|
|
11
|
-
const relativePath = toStoreRelativePath(env, store, flags.path);
|
|
12
|
-
const absolutePath = path.join(store.root, relativePath);
|
|
13
|
-
const note = await parseNote(absolutePath, relativePath);
|
|
14
|
-
const resolution = resolveVisibility(store.config, note);
|
|
15
|
-
return {
|
|
16
|
-
exitCode: ExitCode.Ok,
|
|
17
|
-
data: { path: relativePath, visibility: resolution.value, reason: resolution.reason },
|
|
18
|
-
findings: [],
|
|
19
|
-
humanSummary: `${relativePath}: ${resolution.value} (${resolution.reason})`,
|
|
20
|
-
storeRoot: store.root,
|
|
21
|
-
schemaVersion: store.config.schema_version,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=note-resolve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"note-resolve.js","sourceRoot":"","sources":["../../src/commands/note-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAY/D,SAAS,mBAAmB,CAAC,GAAW,EAAE,KAAY,EAAE,SAAiB;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,KAAY,EACZ,KAAuB;IAEvB,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEzD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;QACrF,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,GAAG,YAAY,KAAK,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM,GAAG;QAC3E,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
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 SessionAbandonFlags {
|
|
6
|
-
branch: string;
|
|
7
|
-
}
|
|
8
|
-
export interface SessionAbandonData {
|
|
9
|
-
branch: string;
|
|
10
|
-
worktree: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function execute(env: RunEnv, store: Store, flags: SessionAbandonFlags): Promise<CommandOutcome<SessionAbandonData>>;
|
|
13
|
-
//# sourceMappingURL=session-abandon.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-abandon.d.ts","sourceRoot":"","sources":["../../src/commands/session-abandon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAkB7C"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { SessionNotFoundError } from '../core/errors.js';
|
|
2
|
-
import { ExitCode } from '../core/exit-codes.js';
|
|
3
|
-
import { deleteBranch, listWorktrees, removeWorktree } from '../core/git/worktree.js';
|
|
4
|
-
export const requires = { store: 'required' };
|
|
5
|
-
export async function execute(env, store, flags) {
|
|
6
|
-
const worktrees = await listWorktrees(env.git, store.root);
|
|
7
|
-
const match = worktrees.find((w) => w.branch === flags.branch);
|
|
8
|
-
if (!match) {
|
|
9
|
-
throw new SessionNotFoundError(flags.branch);
|
|
10
|
-
}
|
|
11
|
-
await removeWorktree(env.git, store.root, match.path, { force: true });
|
|
12
|
-
await deleteBranch(env.git, store.root, flags.branch, { force: true });
|
|
13
|
-
return {
|
|
14
|
-
exitCode: ExitCode.Ok,
|
|
15
|
-
data: { branch: flags.branch, worktree: match.path },
|
|
16
|
-
findings: [],
|
|
17
|
-
humanSummary: `Abandoned session "${flags.branch}" and removed its worktree.`,
|
|
18
|
-
storeRoot: store.root,
|
|
19
|
-
schemaVersion: store.config.schema_version,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=session-abandon.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-abandon.js","sourceRoot":"","sources":["../../src/commands/session-abandon.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGtF,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAW/D,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,KAAY,EACZ,KAA0B;IAE1B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;QACpD,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,sBAAsB,KAAK,CAAC,MAAM,6BAA6B;QAC7E,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { MergeMethod } from '../adapters/forge/types.js';
|
|
2
|
-
import type { Adapter } from '../adapters/types.js';
|
|
3
|
-
import type { CommandOutcome, CommandRequires } from '../core/command.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 SessionLandFlags {
|
|
8
|
-
pr?: number;
|
|
9
|
-
branch?: string;
|
|
10
|
-
yes?: boolean;
|
|
11
|
-
mergeMethod?: MergeMethod;
|
|
12
|
-
reap?: boolean;
|
|
13
|
-
}
|
|
14
|
-
export interface SyncOutcome {
|
|
15
|
-
attempted: boolean;
|
|
16
|
-
synced: boolean;
|
|
17
|
-
reason?: string;
|
|
18
|
-
}
|
|
19
|
-
export interface ReapOutcome {
|
|
20
|
-
attempted: boolean;
|
|
21
|
-
reaped: boolean;
|
|
22
|
-
reason?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface SessionLandData {
|
|
25
|
-
branch: string;
|
|
26
|
-
pr: {
|
|
27
|
-
number: number;
|
|
28
|
-
url: string;
|
|
29
|
-
title: string;
|
|
30
|
-
state: string;
|
|
31
|
-
mergeable: string;
|
|
32
|
-
};
|
|
33
|
-
gate: 'confirmed' | 'declined' | 'not_required';
|
|
34
|
-
merged: boolean;
|
|
35
|
-
sync: SyncOutcome;
|
|
36
|
-
reap: ReapOutcome;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* session-submit-and-land spec (D1): every step re-reads live state (the
|
|
40
|
-
* pull request's state, the root checkout's branch, the worktree list), so
|
|
41
|
-
* a retry after a partial failure is just running the command again — it
|
|
42
|
-
* naturally skips whatever already happened rather than replaying it.
|
|
43
|
-
*/
|
|
44
|
-
export declare function execute(env: RunEnv, store: Store, flags: SessionLandFlags, registry?: readonly Adapter[]): Promise<CommandOutcome<SessionLandData>>;
|
|
45
|
-
//# sourceMappingURL=session-land.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-land.d.ts","sourceRoot":"","sources":["../../src/commands/session-land.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAe5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,gBAAgB,EACvB,QAAQ,GAAE,SAAS,OAAO,EAAqB,GAC9C,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAwE1C"}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { configuredAdapters } from '../adapters/registry.js';
|
|
3
|
-
import { BUILTIN_ADAPTERS } from '../adapters/builtin/index.js';
|
|
4
|
-
import { isInteractive } from '../core/env.js';
|
|
5
|
-
import { MergeNotConfirmedError, NoForgeConfiguredError, PullRequestClosedError, PullRequestHeadMismatchError, PullRequestNotMergeableError, SessionLandConsentRequiredError, SessionLandOnDefaultBranchError, } from '../core/errors.js';
|
|
6
|
-
import { ExitCode } from '../core/exit-codes.js';
|
|
7
|
-
import { currentBranch } from '../core/git/repo.js';
|
|
8
|
-
import { fetchOrigin, listWorktrees, mainWorktreePath, removeWorktree, deleteBranch, hasRemote } from '../core/git/worktree.js';
|
|
9
|
-
import { isWorkingTreeClean } from '../core/git/repo.js';
|
|
10
|
-
import { isSessionBranch, isSessionWorktreePath } from '../core/session.js';
|
|
11
|
-
export const requires = { store: 'required' };
|
|
12
|
-
/**
|
|
13
|
-
* session-submit-and-land spec (D1): every step re-reads live state (the
|
|
14
|
-
* pull request's state, the root checkout's branch, the worktree list), so
|
|
15
|
-
* a retry after a partial failure is just running the command again — it
|
|
16
|
-
* naturally skips whatever already happened rather than replaying it.
|
|
17
|
-
*/
|
|
18
|
-
export async function execute(env, store, flags, registry = BUILTIN_ADAPTERS) {
|
|
19
|
-
// D1 / the non-interactive-consent scenario: fails before reading or
|
|
20
|
-
// changing anything on the forge — checked first, before any git or
|
|
21
|
-
// network call at all.
|
|
22
|
-
if (!flags.yes && !isInteractive(env)) {
|
|
23
|
-
throw new SessionLandConsentRequiredError();
|
|
24
|
-
}
|
|
25
|
-
const defaultBranch = store.config.git.default_branch;
|
|
26
|
-
// The target comes from exactly one source: --branch names it outright,
|
|
27
|
-
// --pr defers to the pull request's head branch, and with neither it is the
|
|
28
|
-
// branch checked out where the command was invoked. Only the first two are
|
|
29
|
-
// knowable without the forge, so only they can be refused before contacting it.
|
|
30
|
-
const requested = flags.branch ?? (flags.pr === undefined ? await currentBranch(env.git, store.root) : undefined);
|
|
31
|
-
if (requested === defaultBranch) {
|
|
32
|
-
throw new SessionLandOnDefaultBranchError(requested);
|
|
33
|
-
}
|
|
34
|
-
const [forgeAdapter] = configuredAdapters(store.config, 'forge', registry);
|
|
35
|
-
if (!forgeAdapter || !(await forgeAdapter.isAvailable(store.root))) {
|
|
36
|
-
throw new NoForgeConfiguredError();
|
|
37
|
-
}
|
|
38
|
-
const ref = flags.pr !== undefined ? String(flags.pr) : requested;
|
|
39
|
-
let pr = await forgeAdapter.pullRequest(store.root, ref);
|
|
40
|
-
if (requested === undefined) {
|
|
41
|
-
// The target IS the head branch, so there is nothing to mismatch — but the
|
|
42
|
-
// default branch is still refused, now on the branch the forge reported.
|
|
43
|
-
if (pr.headBranch === defaultBranch) {
|
|
44
|
-
throw new SessionLandOnDefaultBranchError(pr.headBranch);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (pr.headBranch !== requested) {
|
|
48
|
-
throw new PullRequestHeadMismatchError(requested, pr.headBranch);
|
|
49
|
-
}
|
|
50
|
-
const branch = requested ?? pr.headBranch;
|
|
51
|
-
let merged = pr.state === 'merged';
|
|
52
|
-
let gate = 'not_required';
|
|
53
|
-
if (pr.state === 'closed') {
|
|
54
|
-
throw new PullRequestClosedError(pr.number);
|
|
55
|
-
}
|
|
56
|
-
if (pr.state === 'open') {
|
|
57
|
-
if (pr.mergeable === 'unknown') {
|
|
58
|
-
pr = await forgeAdapter.pullRequest(store.root, ref); // D1: re-query once before stopping
|
|
59
|
-
}
|
|
60
|
-
if (pr.mergeable === 'conflicting' || pr.mergeable === 'unknown') {
|
|
61
|
-
throw new PullRequestNotMergeableError(pr.number, pr.mergeable);
|
|
62
|
-
}
|
|
63
|
-
// pr.mergeable === 'mergeable' from here on.
|
|
64
|
-
const confirmed = flags.yes ? true : await env.prompter.confirm({ message: gateMessage(pr) });
|
|
65
|
-
gate = confirmed ? 'confirmed' : 'declined';
|
|
66
|
-
if (!confirmed) {
|
|
67
|
-
return outcome(store, branch, pr, gate, false, { attempted: false, synced: false }, { attempted: false, reaped: false });
|
|
68
|
-
}
|
|
69
|
-
await forgeAdapter.mergePullRequest(store.root, pr.number, flags.mergeMethod ?? 'squash');
|
|
70
|
-
const after = await forgeAdapter.pullRequest(store.root, ref);
|
|
71
|
-
if (after.state !== 'merged') {
|
|
72
|
-
throw new MergeNotConfirmedError(pr.number);
|
|
73
|
-
}
|
|
74
|
-
pr = after;
|
|
75
|
-
merged = true;
|
|
76
|
-
}
|
|
77
|
-
const clone = await mainWorktreePath(env.git, store.root);
|
|
78
|
-
const sync = await syncCanonicalClone(env, clone, defaultBranch);
|
|
79
|
-
const reap = await reapWorktree(env, store, clone, branch, flags.reap ?? false);
|
|
80
|
-
return outcome(store, branch, pr, gate, merged, sync, reap);
|
|
81
|
-
}
|
|
82
|
-
function gateMessage(pr) {
|
|
83
|
-
return `PR #${pr.number} "${pr.title}" (${pr.url}) — OPEN, MERGEABLE. Merge?`;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* D2: fast-forward only, in the store's canonical clone — the checkout the
|
|
87
|
-
* default branch lives in, whichever checkout the command was invoked from
|
|
88
|
-
* (a session worktree, most often). Never checked out, reset, or discarded.
|
|
89
|
-
*/
|
|
90
|
-
async function syncCanonicalClone(env, clone, defaultBranch) {
|
|
91
|
-
const branch = await currentBranch(env.git, clone);
|
|
92
|
-
if (branch !== defaultBranch) {
|
|
93
|
-
return { attempted: false, synced: false, reason: `the canonical clone (${clone}) is not on the default branch` };
|
|
94
|
-
}
|
|
95
|
-
if (!(await hasRemote(env.git, clone))) {
|
|
96
|
-
return { attempted: false, synced: false, reason: 'no remote configured' };
|
|
97
|
-
}
|
|
98
|
-
const fetched = await fetchOrigin(env.git, clone, defaultBranch);
|
|
99
|
-
if (!fetched) {
|
|
100
|
-
return { attempted: true, synced: false, reason: 'fetch failed' };
|
|
101
|
-
}
|
|
102
|
-
const merge = await env.git.run(['merge', '--ff-only', `origin/${defaultBranch}`], { cwd: clone, allowFailure: true });
|
|
103
|
-
if (merge.exitCode !== 0) {
|
|
104
|
-
return { attempted: true, synced: false, reason: 'cannot fast-forward (diverged from origin)' };
|
|
105
|
-
}
|
|
106
|
-
return { attempted: true, synced: true };
|
|
107
|
-
}
|
|
108
|
-
/** D3: opt-in, and scoped to a worktree `session start` made — never the one this command is currently running from. */
|
|
109
|
-
async function reapWorktree(env, store, clone, branch, requested) {
|
|
110
|
-
if (!requested) {
|
|
111
|
-
return { attempted: false, reaped: false, reason: 'pass --reap, or run `ctxr session reap`' };
|
|
112
|
-
}
|
|
113
|
-
const worktrees = await listWorktrees(env.git, clone);
|
|
114
|
-
const target = worktrees.find((w) => w.branch === branch);
|
|
115
|
-
if (!target) {
|
|
116
|
-
return { attempted: true, reaped: false, reason: 'no worktree found for this branch' };
|
|
117
|
-
}
|
|
118
|
-
if (!isSessionBranch(store.config, branch) && !isSessionWorktreePath(store.config, target.path)) {
|
|
119
|
-
return { attempted: true, reaped: false, reason: 'not a session worktree' };
|
|
120
|
-
}
|
|
121
|
-
// The hazard is the INVOKING directory, not the resolved store root: removing
|
|
122
|
-
// the worktree this process stands in pulls the caller's cwd out from under it.
|
|
123
|
-
if (isInside(env.cwd, target.path)) {
|
|
124
|
-
return {
|
|
125
|
-
attempted: true,
|
|
126
|
-
reaped: false,
|
|
127
|
-
reason: `cannot remove the worktree this command is running from; re-run from the canonical clone (${clone}), or run \`ctxr session reap\` there`,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
if (!(await isWorkingTreeClean(env.git, target.path))) {
|
|
131
|
-
return { attempted: true, reaped: false, reason: 'worktree has uncommitted changes' };
|
|
132
|
-
}
|
|
133
|
-
await removeWorktree(env.git, clone, target.path);
|
|
134
|
-
await deleteBranch(env.git, clone, branch);
|
|
135
|
-
return { attempted: true, reaped: true };
|
|
136
|
-
}
|
|
137
|
-
/** True when `dir` IS `parent` or lies anywhere beneath it. */
|
|
138
|
-
function isInside(dir, parent) {
|
|
139
|
-
const resolved = path.resolve(dir);
|
|
140
|
-
const root = path.resolve(parent);
|
|
141
|
-
return resolved === root || resolved.startsWith(root + path.sep);
|
|
142
|
-
}
|
|
143
|
-
/** A step that did not happen names why, whether or not it was attempted — `attempted` stays on the JSON outcome for callers that distinguish the two. */
|
|
144
|
-
function stepSummary(done, reason) {
|
|
145
|
-
if (done)
|
|
146
|
-
return 'ok';
|
|
147
|
-
return reason ? `skipped: ${reason}` : 'not attempted';
|
|
148
|
-
}
|
|
149
|
-
function outcome(store, branch, pr, gate, merged, sync, reap) {
|
|
150
|
-
const summary = gate === 'declined'
|
|
151
|
-
? `Merge declined for PR #${pr.number}; nothing landed.`
|
|
152
|
-
: `PR #${pr.number} ${merged ? 'merged' : 'not merged'}` +
|
|
153
|
-
`; sync ${stepSummary(sync.synced, sync.reason)}` +
|
|
154
|
-
`; reap ${stepSummary(reap.reaped, reap.reason)}.`;
|
|
155
|
-
return {
|
|
156
|
-
exitCode: ExitCode.Ok,
|
|
157
|
-
data: {
|
|
158
|
-
branch,
|
|
159
|
-
pr: { number: pr.number, url: pr.url, title: pr.title, state: pr.state, mergeable: pr.mergeable },
|
|
160
|
-
gate,
|
|
161
|
-
merged,
|
|
162
|
-
sync,
|
|
163
|
-
reap,
|
|
164
|
-
},
|
|
165
|
-
findings: [],
|
|
166
|
-
humanSummary: summary,
|
|
167
|
-
storeRoot: store.root,
|
|
168
|
-
schemaVersion: store.config.schema_version,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=session-land.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-land.js","sourceRoot":"","sources":["../../src/commands/session-land.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
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 ReapOutcome {
|
|
6
|
-
branch: string;
|
|
7
|
-
worktree: string;
|
|
8
|
-
reason: string;
|
|
9
|
-
}
|
|
10
|
-
export interface SessionReapData {
|
|
11
|
-
reaped: ReapOutcome[];
|
|
12
|
-
skipped: ReapOutcome[];
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* write-lifecycle spec: reclaims session worktrees whose branch has been
|
|
16
|
-
* merged into the default branch and whose tree is clean — never a branch
|
|
17
|
-
* with unmerged commits, never a dirty worktree. This removes the
|
|
18
|
-
* concurrency race entirely rather than hardening against it: a
|
|
19
|
-
* conservative reap that only ever touches provably-safe sessions.
|
|
20
|
-
*/
|
|
21
|
-
export declare function execute(env: RunEnv, store: Store): Promise<CommandOutcome<SessionReapData>>;
|
|
22
|
-
//# sourceMappingURL=session-reap.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-reap.d.ts","sourceRoot":"","sources":["../../src/commands/session-reap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAiDjG"}
|