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";
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({ user_id: tokens.user_id, email: tokens.email })
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: ${tokens.user_id}`);
2396
- console.log(` email: ${tokens.email ?? "(unknown)"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebyplan",
3
- "version": "1.13.17",
3
+ "version": "1.13.20",
4
4
  "description": "CLI for CodeByPlan — AI-powered development planning and tracking",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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, setup, and
68
- # other test infrastructure are imported by the test files that exercise
69
- # them; requiring a dedicated .test.ts for a fixture is nonsensical.
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
- - **All `/cbp-*` skills** except the production-shipment trio below. 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.
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