codebyplan 1.13.17 → 1.13.20
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/cli.js
CHANGED
|
@@ -14,7 +14,7 @@ var VERSION, PACKAGE_NAME;
|
|
|
14
14
|
var init_version = __esm({
|
|
15
15
|
"src/lib/version.ts"() {
|
|
16
16
|
"use strict";
|
|
17
|
-
VERSION = "1.13.
|
|
17
|
+
VERSION = "1.13.20";
|
|
18
18
|
PACKAGE_NAME = "codebyplan";
|
|
19
19
|
}
|
|
20
20
|
});
|
|
@@ -1616,6 +1616,7 @@ var init_settings_merge = __esm({
|
|
|
1616
1616
|
"disableSkillShellExecution",
|
|
1617
1617
|
"skipWebFetchPreflight",
|
|
1618
1618
|
"fastModePerSessionOptIn",
|
|
1619
|
+
"autoMemoryEnabled",
|
|
1619
1620
|
"effortLevel",
|
|
1620
1621
|
"showClearContextOnPlanAccept",
|
|
1621
1622
|
"syntaxHighlightingDisabled",
|
|
@@ -2373,6 +2374,22 @@ var whoami_exports = {};
|
|
|
2373
2374
|
__export(whoami_exports, {
|
|
2374
2375
|
runWhoami: () => runWhoami
|
|
2375
2376
|
});
|
|
2377
|
+
async function fetchMe(accessToken) {
|
|
2378
|
+
try {
|
|
2379
|
+
const res = await fetch(meEndpoint(), {
|
|
2380
|
+
headers: { Authorization: `Bearer ${accessToken}` },
|
|
2381
|
+
signal: AbortSignal.timeout(1e4)
|
|
2382
|
+
});
|
|
2383
|
+
if (!res.ok) return null;
|
|
2384
|
+
const body = await res.json();
|
|
2385
|
+
return {
|
|
2386
|
+
email: body.email ?? null,
|
|
2387
|
+
username: body.username ?? null
|
|
2388
|
+
};
|
|
2389
|
+
} catch {
|
|
2390
|
+
return null;
|
|
2391
|
+
}
|
|
2392
|
+
}
|
|
2376
2393
|
async function runWhoami(opts = {}) {
|
|
2377
2394
|
const tokens = await loadTokens();
|
|
2378
2395
|
if (opts.json) {
|
|
@@ -2381,8 +2398,13 @@ async function runWhoami(opts = {}) {
|
|
|
2381
2398
|
process.exitCode = 1;
|
|
2382
2399
|
return;
|
|
2383
2400
|
}
|
|
2401
|
+
const me2 = await fetchMe(tokens.access_token);
|
|
2384
2402
|
console.log(
|
|
2385
|
-
JSON.stringify({
|
|
2403
|
+
JSON.stringify({
|
|
2404
|
+
user_id: tokens.user_id,
|
|
2405
|
+
email: me2?.email ?? tokens.email,
|
|
2406
|
+
username: me2?.username ?? null
|
|
2407
|
+
})
|
|
2386
2408
|
);
|
|
2387
2409
|
return;
|
|
2388
2410
|
}
|
|
@@ -2391,15 +2413,26 @@ async function runWhoami(opts = {}) {
|
|
|
2391
2413
|
process.exitCode = 1;
|
|
2392
2414
|
return;
|
|
2393
2415
|
}
|
|
2416
|
+
const me = await fetchMe(tokens.access_token);
|
|
2417
|
+
const degraded = me === null;
|
|
2418
|
+
const email = me?.email ?? tokens.email;
|
|
2419
|
+
const username = me?.username ?? null;
|
|
2394
2420
|
console.log(`
|
|
2395
|
-
user_id:
|
|
2396
|
-
console.log(` email:
|
|
2421
|
+
user_id: ${tokens.user_id}`);
|
|
2422
|
+
console.log(` email: ${email ?? "(unknown)"}`);
|
|
2423
|
+
console.log(` username: ${username ?? "(not set)"}`);
|
|
2424
|
+
if (degraded) {
|
|
2425
|
+
console.log(` (profile fetch failed \u2014 showing stored credentials)
|
|
2397
2426
|
`);
|
|
2427
|
+
} else {
|
|
2428
|
+
console.log();
|
|
2429
|
+
}
|
|
2398
2430
|
}
|
|
2399
2431
|
var init_whoami = __esm({
|
|
2400
2432
|
"src/cli/whoami.ts"() {
|
|
2401
2433
|
"use strict";
|
|
2402
2434
|
init_keychain();
|
|
2435
|
+
init_urls();
|
|
2403
2436
|
}
|
|
2404
2437
|
});
|
|
2405
2438
|
|
package/package.json
CHANGED
|
@@ -64,10 +64,10 @@ while IFS= read -r FILE; do
|
|
|
64
64
|
continue
|
|
65
65
|
fi
|
|
66
66
|
|
|
67
|
-
# Skip files under a __tests__/ directory — fixtures, helpers,
|
|
68
|
-
# other test infrastructure are imported by the test
|
|
69
|
-
# them; requiring a dedicated .test.ts
|
|
70
|
-
if echo "$FILE" | grep -qE '/__tests__/'; then
|
|
67
|
+
# Skip files under a __tests__/ or __mocks__/ directory — fixtures, helpers,
|
|
68
|
+
# setup, manual mocks, and other test infrastructure are imported by the test
|
|
69
|
+
# files that exercise them; requiring a dedicated .test.ts is nonsensical.
|
|
70
|
+
if echo "$FILE" | grep -qE '/__tests__/|/__mocks__/'; then
|
|
71
71
|
SKIPPED=$((SKIPPED + 1))
|
|
72
72
|
continue
|
|
73
73
|
fi
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"baseRef": "fresh"
|
|
18
18
|
},
|
|
19
19
|
"autoScrollEnabled": true,
|
|
20
|
+
"autoMemoryEnabled": false,
|
|
20
21
|
"cleanupPeriodDays": 30,
|
|
21
22
|
"includeGitInstructions": true,
|
|
22
23
|
"showThinkingSummaries": true,
|
|
@@ -53,6 +54,16 @@
|
|
|
53
54
|
"Skill(cbp-checkpoint-end)",
|
|
54
55
|
"Skill(cbp-ship)",
|
|
55
56
|
"Skill(cbp-ship-main)",
|
|
57
|
+
"Skill(cbp-checkpoint-start)",
|
|
58
|
+
"Skill(cbp-checkpoint-create)",
|
|
59
|
+
"Skill(cbp-checkpoint-check)",
|
|
60
|
+
"Skill(cbp-checkpoint-complete)",
|
|
61
|
+
"Skill(cbp-round-update)",
|
|
62
|
+
"Skill(cbp-session-end)",
|
|
63
|
+
"Skill(cbp-task-complete)",
|
|
64
|
+
"Skill(cbp-standalone-task-create)",
|
|
65
|
+
"Skill(cbp-standalone-task-start)",
|
|
66
|
+
"Skill(cbp-standalone-task-complete)",
|
|
56
67
|
"mcp__codebyplan__accept_invite",
|
|
57
68
|
"mcp__codebyplan__change_role",
|
|
58
69
|
"mcp__codebyplan__create_launch",
|
|
@@ -100,11 +111,7 @@
|
|
|
100
111
|
"Skill(cbp-build-cc-rule)",
|
|
101
112
|
"Skill(cbp-build-cc-settings)",
|
|
102
113
|
"Skill(cbp-build-cc-skill)",
|
|
103
|
-
"Skill(cbp-checkpoint-check)",
|
|
104
|
-
"Skill(cbp-checkpoint-complete)",
|
|
105
|
-
"Skill(cbp-checkpoint-create)",
|
|
106
114
|
"Skill(cbp-checkpoint-plan)",
|
|
107
|
-
"Skill(cbp-checkpoint-start)",
|
|
108
115
|
"Skill(cbp-checkpoint-update)",
|
|
109
116
|
"Skill(cbp-frontend-a11y)",
|
|
110
117
|
"Skill(cbp-frontend-design)",
|
|
@@ -121,28 +128,17 @@
|
|
|
121
128
|
"Skill(cbp-round-execute)",
|
|
122
129
|
"Skill(cbp-round-input)",
|
|
123
130
|
"Skill(cbp-round-start)",
|
|
124
|
-
"Skill(cbp-round-update)",
|
|
125
|
-
"Skill(cbp-session-end)",
|
|
126
131
|
"Skill(cbp-session-start)",
|
|
127
132
|
"Skill(cbp-setup-cmux)",
|
|
128
133
|
"Skill(cbp-setup-e2e)",
|
|
129
134
|
"Skill(cbp-setup-eslint)",
|
|
130
135
|
"Skill(cbp-ship-configure)",
|
|
131
136
|
"Skill(cbp-standalone-task-check)",
|
|
132
|
-
"Skill(cbp-standalone-task-complete)",
|
|
133
|
-
"Skill(cbp-standalone-task-create)",
|
|
134
|
-
"Skill(cbp-standalone-task-start)",
|
|
135
137
|
"Skill(cbp-standalone-task-testing)",
|
|
136
138
|
"Skill(cbp-supabase-branch-check)",
|
|
137
139
|
"Skill(cbp-supabase-migrate)",
|
|
138
140
|
"Skill(cbp-supabase-setup)",
|
|
139
|
-
"Skill(cbp-standalone-task-check)",
|
|
140
|
-
"Skill(cbp-standalone-task-complete)",
|
|
141
|
-
"Skill(cbp-standalone-task-create)",
|
|
142
|
-
"Skill(cbp-standalone-task-start)",
|
|
143
|
-
"Skill(cbp-standalone-task-testing)",
|
|
144
141
|
"Skill(cbp-task-check)",
|
|
145
|
-
"Skill(cbp-task-complete)",
|
|
146
142
|
"Skill(cbp-task-create)",
|
|
147
143
|
"Skill(cbp-task-start)",
|
|
148
144
|
"Skill(cbp-task-testing)",
|
|
@@ -22,7 +22,7 @@ Precedence is `deny > ask > allow`; arrays union across scopes (managed/user/pro
|
|
|
22
22
|
|
|
23
23
|
### `allow` — the autonomous workflow surface
|
|
24
24
|
|
|
25
|
-
- **
|
|
25
|
+
- **Non-lifecycle, non-shipment `/cbp-*` skills** — authoring (`cbp-build-cc-*`), frontend (`cbp-frontend-*`), git (`cbp-git-*`, `cbp-merge-main`, `cbp-refresh-infra`), round work (`cbp-round-check`/`-end`/`-execute`/`-input`/`-start`), setup/configure (`cbp-setup-*`, `cbp-ship-configure`, `cbp-supabase-*`), task prep (`cbp-task-check`/`-create`/`-start`/`-testing`, `cbp-standalone-task-check`/`-testing`), planning (`cbp-checkpoint-plan`/`-update`), plus `cbp-session-start` and `cbp-todo`. Invoking a skill is the intended mode of operation; the gated side effects happen inside via the Bash/MCP tools the skill calls, which carry their own tiering. The lifecycle/state-transition skills are the exception — they live in `ask` (next section).
|
|
26
26
|
- **All `mcp__codebyplan__*` reads** (`get_*`, `list_*`, `search_*`, `health_check`, `lookup_symbol`, `resolve_library_id`, `get_chunk`).
|
|
27
27
|
- **Routine workflow-write MCP tools** the pipeline calls many times per task: create/update/complete checkpoint, task, and round; session log + session-state writes; `create_worktree`, `add_library`, `flag_stale_chunk`, `update_server_config`, `update_eslint_repo_config`, `update_task_template`. Gating these with `ask` would make the autonomous workflow unusable.
|
|
28
28
|
- **Read/safe CLI commands** (both `codebyplan X` and `npx codebyplan X`): `whoami`, `resolve-worktree`, `statusline`, `ports`, `tech-stack`, `eslint`, `round`, `help`, `--version`.
|
|
@@ -30,6 +30,7 @@ Precedence is `deny > ask > allow`; arrays union across scopes (managed/user/pro
|
|
|
30
30
|
### `ask` — the deliberate confirm-gate
|
|
31
31
|
|
|
32
32
|
- **Production-shipment skills**: `cbp-ship`, `cbp-ship-main`, `cbp-checkpoint-end` — these promote/deploy to production, so they prompt even in an otherwise auto-allowed setup.
|
|
33
|
+
- **Lifecycle / state-transition skills**: `cbp-checkpoint-start`, `cbp-checkpoint-create`, `cbp-checkpoint-check`, `cbp-checkpoint-complete`, `cbp-round-update`, `cbp-session-end`, `cbp-task-complete`, `cbp-standalone-task-create`, `cbp-standalone-task-start`, `cbp-standalone-task-complete` — these open or close checkpoints, tasks, rounds, and sessions (advancing workflow state in the database), so they stop for explicit confirmation rather than running autonomously.
|
|
33
34
|
- **Destructive / admin / external MCP tools**: `delete_session_log`, `delete_worktree`, `delete_launch`, `create_repo`, `create_launch`, `update_launch`, `release_assignment`, and the membership tools `invite_member`, `remove_member`, `change_role`, `accept_invite`, `revoke_invite`.
|
|
34
35
|
- **Mutating / external / clobber-risk CLI commands** (both prefixes): `setup`, `login`, `logout`, `upgrade-auth`, `config` (can overwrite committed `.codebyplan/` files), `branch` (rewrites branch config), `ship`, `claude` (`install`/`update`/`uninstall` overwrite `.claude/`).
|
|
35
36
|
|