@idea1/cli 1.10.4 → 1.11.1

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.
Files changed (74) hide show
  1. package/README.md +74 -32
  2. package/dist/commands/help.d.ts.map +1 -1
  3. package/dist/commands/help.js +30 -12
  4. package/dist/commands/help.js.map +1 -1
  5. package/dist/commands/index.d.ts +3 -1
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +5 -1
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/login.d.ts +3 -0
  10. package/dist/commands/login.d.ts.map +1 -0
  11. package/dist/commands/login.js +15 -0
  12. package/dist/commands/login.js.map +1 -0
  13. package/dist/commands/logout.d.ts +3 -0
  14. package/dist/commands/logout.d.ts.map +1 -0
  15. package/dist/commands/logout.js +17 -0
  16. package/dist/commands/logout.js.map +1 -0
  17. package/dist/commands/release.d.ts +9 -4
  18. package/dist/commands/release.d.ts.map +1 -1
  19. package/dist/commands/release.js +53 -27
  20. package/dist/commands/release.js.map +1 -1
  21. package/dist/lib/project-item-url.d.ts +6 -0
  22. package/dist/lib/project-item-url.d.ts.map +1 -1
  23. package/dist/lib/project-item-url.js +11 -0
  24. package/dist/lib/project-item-url.js.map +1 -1
  25. package/dist/lib/settings.d.ts +25 -3
  26. package/dist/lib/settings.d.ts.map +1 -1
  27. package/dist/lib/settings.js +26 -1
  28. package/dist/lib/settings.js.map +1 -1
  29. package/dist/prompts/platform-prompts.d.ts +5 -30
  30. package/dist/prompts/platform-prompts.d.ts.map +1 -1
  31. package/dist/prompts/platform-prompts.js +5 -44
  32. package/dist/prompts/platform-prompts.js.map +1 -1
  33. package/dist/services/github.d.ts +21 -19
  34. package/dist/services/github.d.ts.map +1 -1
  35. package/dist/services/github.js +56 -64
  36. package/dist/services/github.js.map +1 -1
  37. package/dist/services/platform-auth.d.ts +44 -0
  38. package/dist/services/platform-auth.d.ts.map +1 -0
  39. package/dist/services/platform-auth.js +476 -0
  40. package/dist/services/platform-auth.js.map +1 -0
  41. package/dist/services/platform.d.ts +75 -18
  42. package/dist/services/platform.d.ts.map +1 -1
  43. package/dist/services/platform.js +254 -191
  44. package/dist/services/platform.js.map +1 -1
  45. package/dist/services/setup.d.ts.map +1 -1
  46. package/dist/services/setup.js +2 -1
  47. package/dist/services/setup.js.map +1 -1
  48. package/dist/types/index.d.ts +32 -0
  49. package/dist/types/index.d.ts.map +1 -1
  50. package/dist/types/index.js +1 -1
  51. package/dist/types/index.js.map +1 -1
  52. package/dist/workflow/data/team-member.d.ts +9 -2
  53. package/dist/workflow/data/team-member.d.ts.map +1 -1
  54. package/dist/workflow/data/team-member.js +8 -1
  55. package/dist/workflow/data/team-member.js.map +1 -1
  56. package/dist/workflow/engine/approval-flow.d.ts +28 -11
  57. package/dist/workflow/engine/approval-flow.d.ts.map +1 -1
  58. package/dist/workflow/engine/approval-flow.js +52 -17
  59. package/dist/workflow/engine/approval-flow.js.map +1 -1
  60. package/dist/workflow/engine/branch-setup.d.ts +1 -1
  61. package/dist/workflow/engine/branch-setup.js +1 -1
  62. package/dist/workflow/engine/handlers/approve-pr.d.ts +10 -9
  63. package/dist/workflow/engine/handlers/approve-pr.d.ts.map +1 -1
  64. package/dist/workflow/engine/handlers/approve-pr.js +24 -17
  65. package/dist/workflow/engine/handlers/approve-pr.js.map +1 -1
  66. package/dist/workflow/engine/release-engine.d.ts +90 -58
  67. package/dist/workflow/engine/release-engine.d.ts.map +1 -1
  68. package/dist/workflow/engine/release-engine.js +296 -161
  69. package/dist/workflow/engine/release-engine.js.map +1 -1
  70. package/dist/workflow/engine/workflow-engine.d.ts +9 -2
  71. package/dist/workflow/engine/workflow-engine.d.ts.map +1 -1
  72. package/dist/workflow/engine/workflow-engine.js +20 -2
  73. package/dist/workflow/engine/workflow-engine.js.map +1 -1
  74. package/package.json +2 -1
package/README.md CHANGED
@@ -8,6 +8,23 @@ CLI tool for Idea1.ai workflow automation - AI-assisted development workflows.
8
8
  npm install -g @idea1/cli
9
9
  ```
10
10
 
11
+ ## Signing in
12
+
13
+ The CLI reaches idea1.ai through the platform's REST API, signed in as you on one of your teams.
14
+
15
+ ```bash
16
+ idea1 login # sign in in the browser and pick the team the CLI works on
17
+ idea1 logout # revoke the sign-in and remove it from this computer
18
+ ```
19
+
20
+ `idea1 login` opens the idea1.ai consent page in the browser, where you approve the CLI and choose the team; the CLI then prints the account and team it is signed in as. The CLI is an OAuth client of api.idea1.ai: it registers itself the first time, signs in with the authorization code flow and PKCE, and receives the browser's redirect on a local loopback port. Its access is limited to reading the team and reading and writing its projects (`team:read projects:read projects:write`).
21
+
22
+ The sign-in is kept in the operating system's credential store (macOS Keychain, Windows Credential Manager, the Secret Service on Linux) under the service `idea1-cli`, as one or more entries per API base URL. Access tokens are short-lived and renewed automatically; the CLI processes of a parallel run share the one sign-in. A command that needs idea1.ai while you are not signed in starts the sign-in; an unattended run (a target of a batch) fails instead, asking for `idea1 login`.
23
+
24
+ Environment variables:
25
+ - `IDEA1_TOKEN` - a bearer token every platform call uses instead of the sign-in, such as a team API client's token in CI. Nothing is read from or kept in the credential store while it is set.
26
+ - `IDEA1_API_BASE_URL` - the platform's API (default: `https://api.idea1.ai`).
27
+
11
28
  ## Usage
12
29
 
13
30
  ### Headless Mode
@@ -43,9 +60,10 @@ idea1 approve-pr --target working/integration/<name>-main
43
60
  # From working/release: approve several items, branches or PRs at once, each in its own unattended run, in parallel
44
61
  idea1 approve-pr --target https://app.idea1.ai/project/items/590,working/agent/fix-config,https://github.com/org/repo/pull/912
45
62
 
46
- # Release the release branch to production (bumps changed packages' versions, opens the release PR into main assigned to you, and merges it once the checks pass)
63
+ # Release the release branch to production (bumps changed packages' versions, opens the release PR into main assigned to you, and has Idea1 merge it once the checks pass)
47
64
  idea1 release # or: idea1 r; on working/hotfix it is a hotfix release of that branch
48
- idea1 release --approve # approve and merge the release PR that is already open
65
+ idea1 release --branch working/content-website-release # a content release of the content release branch
66
+ idea1 release --approve # approve the release PR that is already open; Idea1 merges it
49
67
  idea1 release --target <item url>,<branch> # approve these into working/release first, then release once all have merged
50
68
 
51
69
  # Show help
@@ -104,7 +122,7 @@ The state names and their order are defined once, in `shared-config/workflow-sta
104
122
 
105
123
  ### How the workflow engine works
106
124
 
107
- An item **under workflow management** has a *workflow context* on idea1.ai: its workflow status together with the one branch on origin that carries its work — the repository and branch name, the PR target (base) branch, the dev workflow type and any stack or integration branch. An item with no context is outside workflow management and has no status. The CLI reads and records the context through the platform's MCP tools (`get_item_summary_for_branch`, `get_item_summary`, `upsert_item_workflow_context`) and, having run a transition's automation itself, records the state it reached directly with `update_item`'s `workflowStatus` (and `assignedToEmail`, when the state takes a teammate assignment; the team's members come from `list_team_members`); the web client works on the same context, so the two always agree, and any clone resolves a branch to its item from the platform. The branching decisions the context records (dev workflow type, stack and integration branch, branch name) are made once, when the item's branch is created, and are never asked again for an item that has one. Locally, each clone remembers the item URL a branch was last resolved to in its git config, so ordinary branches are recognized as unmanaged instantly.
125
+ An item **under workflow management** has a *workflow context* on idea1.ai: its workflow status together with the one branch on origin that carries its work — the repository and branch name, the PR target (base) branch, the dev workflow type and any stack or integration branch. An item with no context is outside workflow management and has no status. The CLI reads and records the context through the platform's REST API (an item's summary by item or by branch, and the item's workflow context) and, having run a transition's automation itself, records the state it reached directly as the item's workflow status (with the teammate assigned, when the state takes a teammate assignment; the team's members come from the API too); the web client works on the same context, so the two always agree, and any clone resolves a branch to its item from the platform. The branching decisions the context records (dev workflow type, stack and integration branch, branch name) are made once, when the item's branch is created, and are never asked again for an item that has one. Locally, each clone remembers the item URL a branch was last resolved to in its git config, so ordinary branches are recognized as unmanaged instantly.
108
126
 
109
127
  The branch itself carries the work. A branch's PR is therefore gated on a CI/CD run of exactly what merges, and `approve-pr` merges that run's head. When a branch is deleted on GitHub the context keeps its name and records whether the work merged; a context whose branch is gone without merging gets a new branch the next time the item enters a pre-merge state, while merged work stays merged. Branches put under workflow before the platform kept contexts carry a legacy `.idea1/<branch>.json` file, which the CLI removes from the branch before the approval gate.
110
128
 
@@ -127,11 +145,13 @@ A transition is "enter state X". Entering a state runs that state's automation (
127
145
 
128
146
  A change reaches production through two merges, and **each merge is its approval**.
129
147
 
130
- **Into `working/release`** — the PR's **assignee** (required) is its approver: the teammate the project item is assigned to on the way into Needs Approval for Release, through their linked GitHub account. They review the code and approve it by running `idea1 approve-pr`, which waits for the full CI/CD suite and then **merges** the PR. That is not the GitHub "Approve" button, which only leaves a review behind and merges nothing. A red or unfinished suite stops the merge, and there is no override at this stage. `approve-pr` checks that the person merging is the assignee; anyone else has to confirm explicitly, and the evidence report lists that merge as an exception. GitHub records the approval as `merged_by`, with its timestamp and merge commit. A change approved in the Idea1 web app is merged by the Idea1 GitHub App instead, and only by one of the PR's assignees with a linked GitHub account; the app first posts an approval comment naming that assignee, and that comment is the approval of record.
148
+ **Into `working/release`** — the PR's **assignee** (required) is its approver: the teammate the project item is assigned to on the way into Needs Approval for Release, through their linked GitHub account. They review the code and approve it by running `idea1 approve-pr`, which waits for the full CI/CD suite and then has the Idea1 platform **merge** the PR. That is not the GitHub "Approve" button, which only leaves a review behind and merges nothing. A red or unfinished suite stops the merge, and there is no override at this stage. Only one of the PR's assignees, signed in to Idea1 with a linked GitHub account, approves: `approve-pr` refuses anyone else before waiting for the checks, and the platform refuses them again. The platform posts an approval comment on the PR naming the approver, then merges it as the Idea1 GitHub App; that comment is the approval of record, and nothing is merged when it cannot be posted. A change approved in the Idea1 web app is merged the same way. Nobody merges into `working/release` as themselves, and only the Idea1 GitHub App and the production root tier can push to it (`infrastructure/branch-protection.json`).
149
+
150
+ **Any other branch into `working/release`** — a branch with no project item takes the same gate. `idea1 ready-for-approval` opens its PR (with the approval chain of what the branch carries as the body) and names its assignee — a teammate, assigned through their linked GitHub account, with no item to assign; `idea1 approve-pr` has the platform merge it once the suite passes, with the same assignee and no-override rules, and then deletes the branch. Only the idea1.ai status writes are absent. Integration branches work this way: work items PR into `working/integration/<name>-main` and are approved there exactly as above, then the integration branch itself is carried into `working/release` with these two commands — its PR body lists every work-item PR and who approved it, and `approve-pr` refuses while any PR still targets the integration branch.
131
151
 
132
- **Any other branch into `working/release`** — a branch with no project item takes the same gate. `idea1 ready-for-approval` opens its PR (with the approval chain of what the branch carries as the body) and names its assignee — a teammate, assigned through their linked GitHub account, with no item to assign; `idea1 approve-pr` merges it once the suite passes, with the same no-override rule, and then deletes the branch. Only the idea1.ai status writes are absent. Integration branches work this way: work items PR into `working/integration/<name>-main` and are approved there exactly as above, then the integration branch itself is carried into `working/release` with these two commands — its PR body lists every work-item PR and who approved it, and `approve-pr` refuses while any PR still targets the integration branch.
152
+ **Into the content release branch** — a content change (under `content-website/`) is approved into `working/content-website-release` (`release.contentRelease.branch`) exactly as a change into `working/release` is, except that only a member of the content release's GitHub team (`release.contentRelease.releaserTeam`) approves it: `approve-pr` refuses anyone else before waiting for the checks, and the platform refuses them again.
133
153
 
134
- **Into `main`** — only two branches are released into `main`: `working/release` in a planned release, and `working/hotfix` in a hotfix release. `idea1 release` opens the release PR **assigned to whoever ran it**: the releaser is the approver, and their merge is the recorded approval. A planned release needs no review — every change in it was already approved above, and the release PR body lists each contained PR with who approved it. A commit pushed straight to `working/release` stops the release until a repository admin records why it was pushed directly, which goes on the PR. A hotfix release carries an isolated fix pushed straight to `working/hotfix`, for when `working/release` is not ready to release; its one PR into `main` is where the fix is reviewed and approved. What this stage gates is the build: the required CI/CD checks must pass first. In the default `create` mode the releaser merges the PR in GitHub once the checks are green; in `merge` mode (and with `idea1 release --approve`) the CLI turns on GitHub's auto-merge as the releaser, so GitHub merges once the checks pass and records the releaser as `merged_by`, or waits for the checks with `gh` and merges here where GitHub can't auto-merge. A release approved in the Idea1 web app is merged by the Idea1 GitHub App instead; the app first posts an approval comment naming the releaser, who is the PR's assignee, and that comment is the approval of record. An emergency admin override past a red check needs an explicit confirmation and a stated reason, and is recorded as a comment on the PR before the merge.
154
+ **Into `main`** — only three branches are released into `main`: `working/release` in a planned release, `working/hotfix` in a hotfix release, and `working/content-website-release` in a content release. Only a member of the release role's GitHub team releases: `release.releaserTeam` (`releasers`) for a planned or hotfix release, `release.contentRelease.releaserTeam` (`content-releasers`) for a content release. `idea1 release` refuses anyone else before anything is committed or opened, and the platform refuses them again before it commits or merges anything. `idea1 release` opens the release PR **assigned to whoever ran it**: the releaser is the approver, and their merge is the recorded approval. A planned release needs no review — every change in it was already approved above, and the release PR body lists each contained PR with who approved it. Where the repository's `release.releaseBranchChanges` is `approved-only`, a commit pushed straight to `working/release` stops the release until a repository admin records why it was pushed directly, which goes on the PR; where it is `direct-allowed`, such a commit is listed on the PR for the releaser to review. A hotfix release carries an isolated fix pushed straight to `working/hotfix`, for when `working/release` is not ready to release; its one PR into `main` is where the fix is reviewed and approved. A content release carries the content changes approved into its branch, has no version bumps, and is merged only when every file it changes lies under `release.contentRelease.paths`. What this stage gates is the build: the required CI/CD checks must pass first. In the default `create` mode the releaser of a planned or hotfix release merges the PR in GitHub once the checks are green; in `merge` mode, with `idea1 release --approve`, and for every content release (whose releaser cannot merge into `main` in GitHub), the CLI waits for the checks and the Idea1 platform merges the PR: it checks the releaser is its assignee and holds the release role, brings its change list up to date, checks a content release's files, posts an approval comment naming the releaser - the approval of record - and merges it as the Idea1 GitHub App. A release approved in the Idea1 web app is merged the same way. The version bump is committed by the platform too, as the Idea1 GitHub App, since only the app and the production root tier can push to `working/release`. An emergency admin override past a red check needs an explicit confirmation and a stated reason, and is recorded as a comment on the PR before the admin merges it.
135
155
 
136
156
  This is the change-management control DataFabrIQ is audited on; see "Approval and release gates" in `infrastructure/soc2/policies/change-management-policy.md`.
137
157
 
@@ -167,7 +187,7 @@ Work sometimes starts before its project item does: you make changes in your `wo
167
187
  2. Every uncommitted change — staged or not, plus untracked files that are not ignored — is committed on top of the checkout's commit without touching the checkout, and that commit becomes the tip of the item's branch on origin. For an item with no branch, the branch is created at that commit and recorded as the item's; an item whose branch exists takes the changes only while that branch has no commits of its own and no local checkout. The base branch itself is never committed to or pushed.
168
188
  3. The branch is checked out per the isolation mode: with `main-repo`, the checkout that held the changes switches to the branch with its working tree untouched (it is the branch's tip, so the checkout is clean); with `worktree`, the branch gets a worktree and the carried changes are removed from the base branch checkout.
169
189
 
170
- With `--approve-and-merge`, the item is then advanced through every workflow state up to **Approved and Merged** with nothing asked on the way: no Claude session is launched at Agent Implementation, the item and its PR are assigned to **you** — the team member whose linked GitHub account `gh` is signed in as (the person who merges is the approver of record), the CLI waits for the required CI/CD checks — the same no-override gate as `approve-pr` — and merges, then brings your local base branch up to date with the merge. On a new item it needs changes to carry. A run that stops (failing checks, say) leaves the item at the last state it reached; fix the branch and run `idea1 approve-pr`, or run the command again with `--target`, to continue.
190
+ With `--approve-and-merge`, the item is then advanced through every workflow state up to **Approved and Merged** with nothing asked on the way: no Claude session is launched at Agent Implementation, the item and its PR are assigned to **you** — the team member whose linked GitHub account `gh` is signed in as (the assignee is the approver of record), the CLI waits for the required CI/CD checks — the same no-override gate as `approve-pr` — and the platform merges, then brings your local base branch up to date with the merge. On a new item it needs changes to carry. A run that stops (failing checks, say) leaves the item at the last state it reached; fix the branch and run `idea1 approve-pr`, or run the command again with `--target`, to continue.
171
191
 
172
192
  ### ship-local-changes
173
193
 
@@ -367,7 +387,7 @@ idea1 rfa --assignee name@company.com --target <url>,<branch> # from working/r
367
387
 
368
388
  ### approve-pr
369
389
 
370
- For a project item, advance the item to **Approved and Merged** — the same as `next --to "Approved and Merged"`: from an earlier state, every state in between is entered first, each with its own automation, and an item already at or past it is left as it is. For any other branch, merge the branch's PR. Run by the PR's **assignee**: it waits for the CI/CD suite and merges the PR, and that merge is the approval of record. There is no admin override at this stage for any branch. Several targets are approved in parallel, from `working/release`: each merges as soon as its PR can, and your checkout ends on `working/release`, up to date with every merge, with no worktree left behind.
390
+ For a project item, advance the item to **Approved and Merged** — the same as `next --to "Approved and Merged"`: from an earlier state, every state in between is entered first, each with its own automation, and an item already at or past it is left as it is. For any other branch, approve the branch's PR. Run by the PR's **assignee**: it waits for the CI/CD suite, then the Idea1 platform records your approval on the PR and merges it as the Idea1 GitHub App. There is no admin override at this stage for any branch. Several targets are approved in parallel, from `working/release`: each merges as soon as its PR can, and your checkout ends on `working/release`, up to date with every merge, with no worktree left behind.
371
391
 
372
392
  ```bash
373
393
  idea1 approve-pr
@@ -382,51 +402,54 @@ idea1 approve-pr --target <url>,<branch>,<pr url> --yes # several, in paral
382
402
 
383
403
  **What it does for a project item:**
384
404
  1. Enters every state before Approved and Merged the item has yet to reach (after syncing from origin)
385
- 2. Verifies the approver: refuses when the PR has no assignee, and when you are not the assignee warns that the merge record will name you instead and requires an explicit confirmation (the evidence report lists such a merge as an exception)
386
- 3. Refuses a PR that conflicts with its base straight away, before any wait, and again after the checks (another merge may have made it conflict meanwhile). Waits for the required CI/CD checks on the PR — the checks of the branch's tip on origin, which the PR must have picked up first — then merges the PR. A red or unfinished suite stops the merge — there is no admin override at this stage. The branch is merged as it stands. A legacy branch that still carries its workflow context file has the file removed and pushed instead, and the approval is left for a second run once the re-run suite passes
387
- 4. Records "Approved and Merged" on Idea1.ai
405
+ 2. Verifies the approver: refuses when the PR has no assignee, and when the GitHub account linked to your Idea1 user is not one of its assignees (or you have none linked); a PR into the content release branch also needs you to be a member of `release.contentRelease.releaserTeam`
406
+ 3. Refuses a PR that conflicts with its base straight away, before any wait, and again after the checks (another merge may have made it conflict meanwhile). Waits for the required CI/CD checks on the PR — the checks of the branch's tip on origin, which the PR must have picked up first. A red or unfinished suite stops the approval — there is no admin override at this stage. A legacy branch that still carries its workflow context file has the file removed and pushed instead, and the approval is left for a second run once the re-run suite passes
407
+ 4. Moves the item to "Approved and Merged" on Idea1.ai, which merges it there: the platform checks the approver again, posts the approval comment on the PR, merges it as the Idea1 GitHub App and records the state, all in one transition. The branch is merged as it stands
388
408
  5. Deletes the feature branch: when it is checked out in the main repo, switches to the base branch first; inside a worktree, removes the worktree instead — this always happens, since the base branch can't be checked out in place there. Then fast-forwards the base branch's local checkout to the merge
389
409
 
390
410
  **What it does for a branch with no project item:**
391
411
  1. Finds the branch's PR (run `ready-for-approval` first if there is none) and takes the target branch from it
392
412
  2. Refuses while any open PR still targets the branch — merging would retire the branch and orphan them
393
- 3. Verifies the approver exactly as above, refuses a conflicting PR, waits for the required CI/CD checks and merges. A red or unfinished suite stops the merge — no override
394
- 4. Deletes the branch on origin and locally (removing its worktree, or switching to the base branch first when it is checked out in the main repo), and fast-forwards the base branch's local checkout. Records no workflow status
413
+ 3. Verifies the approver exactly as above, refuses a conflicting PR and waits for the required CI/CD checks. A red or unfinished suite stops the approval — no override
414
+ 4. Has Idea1.ai approve the PR: the platform checks the approver again, refuses a PR into the release target, posts the approval comment and merges it as the Idea1 GitHub App
415
+ 5. Deletes the branch on origin and locally (removing its worktree, or switching to the base branch first when it is checked out in the main repo), and fast-forwards the base branch's local checkout. Records no workflow status
395
416
 
396
417
  ### release
397
418
 
398
- Release to production. Bumps the versions of the packages that changed since the last release (committing the bump to the branch being released), opens the release PR into `main`, **assigned to you**, and merges it — the person who runs the command is the releaser and the approver. A release is made from one of two branches:
419
+ Release to production. Bumps the versions of the packages that changed since the last release (the Idea1 platform commits the bump to the branch being released), opens the release PR into `main`, **assigned to you**, and has it merged — the person who runs the command is the releaser and the approver. Only a member of the release role's GitHub team may release: `release.releaserTeam` for a planned or hotfix release, `release.contentRelease.releaserTeam` for a content release (see [Release Settings](#release-settings)); anyone else is refused before anything is committed or opened. A release is made from one of three branches:
399
420
 
400
- - **Planned release** — the base branch (`working/release`): everything approved into it since the last release. No review is required, because every change in it was already approved on its own PR.
421
+ - **Planned release** — the base branch (`working/release`): everything approved into it since the last release. No review is required, because every change in it was already approved on its own PR. A repository that sets `release.releaseBranchChanges` to `direct-allowed` also accepts changes made directly on the base branch; see [Release Settings](#release-settings).
401
422
  - **Hotfix release** — the hotfix branch (`defaults.hotfixBranch`, `working/hotfix` by default), for an isolated fix that cannot wait until `working/release` is ready to release. The fix is pushed straight to the hotfix branch, and the release PR is where it is reviewed and approved, so there is one PR for it, not two. Run `idea1 release` on the hotfix branch to release it. Bring the hotfix branch level with `main` before pushing the fix, and once the release has merged, merge `main` into `working/release` so the next planned release carries the fix.
423
+ - **Content release** — the content release branch (`release.contentRelease.branch`, `working/content-website-release` here): the content changes approved into it with `idea1 approve-pr` (or merged in GitHub) since the last release. It has no version bumps, and every file it changes must lie under `release.contentRelease.paths`. Run `idea1 release --branch working/content-website-release` (or `idea1 release` on that branch) to open it, then `idea1 release --approve` once its checks pass: a content releaser cannot merge into `main` in GitHub, so the platform merges it.
402
424
 
403
425
  ```bash
404
426
  idea1 release # prompts for any version bumps, the PR mode and title
405
427
  idea1 release # on working/hotfix: a hotfix release of that branch
406
428
  idea1 release --bumps filekit=minor,cli=patch # bump types given up front
407
- idea1 release --pr-mode merge # enable auto-merge (or wait for the checks and merge here)
408
- idea1 release --approve # approve and merge the open release PR
429
+ idea1 release --pr-mode merge # wait for the checks, then Idea1 merges it as your approval
430
+ idea1 release --approve # approve the open release PR; Idea1 merges it
431
+ idea1 release --branch working/content-website-release # open a content release
409
432
  idea1 release --target <url>,<branch> # approve these into the release branch first, then release
410
433
  idea1 r
411
434
  ```
412
435
 
413
436
  **Options:**
414
- - `-b, --branch <branch>` - Branch to release: `baseBranch` (a planned release) or `hotfixBranch` (a hotfix release); any other branch is refused (default: `hotfixBranch` when it is checked out, else `baseBranch`)
437
+ - `-b, --branch <branch>` - Branch to release: `baseBranch` (a planned release), `hotfixBranch` (a hotfix release) or `release.contentRelease.branch` (a content release); any other branch is refused (default: `hotfixBranch` or the content release branch when it is checked out, else `baseBranch`)
415
438
  - `-t, --target-branch <branch>` - Target branch to release into (default: `releaseTargetBranch`, then `main`)
416
439
  - `--approve` - Approve and merge the release PR that is already open, instead of opening one. See [Approving an open release](#approving-an-open-release)
417
440
  - `--target <url | branch | PR url>[,...]` - Planned releases only: project items, branches or PRs to approve into the base branch before releasing it. Asked for, blank by default, which releases the branch as it is. See [Releasing with approvals](#releasing-with-approvals)
418
- - `--bumps <package=type,...>` - Version bump per changed package, as `patch`, `minor` or `major` (e.g. `filekit=minor,cli=patch`). A changed package it doesn't name is prompted for, with `patch` preselected; a package that needs no bump is ignored
419
- - `-pr, --pr-mode <mode>` - `create` (default) creates the PR and opens it in the browser so you merge it there once the required checks pass; `merge` turns on GitHub's auto-merge, so GitHub merges once the required checks pass, and falls back to waiting for every check with `gh` and merging here when GitHub can't auto-merge (the PR is already mergeable, or the repository doesn't allow auto-merge). You are the recorded merger, and the merge is the recorded approval, in every case
441
+ - `--bumps <package=type,...>` - Version bump per changed package, as `patch`, `minor` or `major` (e.g. `filekit=minor,cli=patch`). A changed package it doesn't name is prompted for, with `patch` preselected; a package that needs no bump is ignored. Refused for a content release, which has no bumps
442
+ - `-pr, --pr-mode <mode>` - `create` (default) creates the PR and opens it in the browser so you merge it there once the required checks pass (a content release is not opened in the browser: approve it with `--approve`); `merge` waits for every check with `gh`, then has the Idea1 platform record your approval on the PR and merge it as the Idea1 GitHub App. The merge is the recorded approval in every case
420
443
  - `--title <title>` - PR title (default: `Release <YYYY-MM-DD>`, or `Hotfix release <YYYY-MM-DD>`)
421
444
  - `-y, --yes` - In `merge` mode, merge without asking for confirmation; with `--target`, also start the approvals without asking. The required checks still gate every merge
422
445
 
423
446
  **What it does:**
424
- 1. Requires you to be on the branch being released with nothing uncommitted, unpushed or behind origin, and to have write access to the repository. Refuses when a PR from the release branch into the target is already open: one that does not follow the release workflow (it has no assignee, or its description carries no approval chain) has to be fixed in GitHub or closed, and a release PR is approved with `--approve` instead. The Idea1 web app refuses a release on the same terms
425
- 2. Bumps versions, when the repository's `.idea1/settings.json` has a `release` section (see [Release Settings](#release-settings)). A versioned package needs a bump when its folder differs between the release branch and the target and its `package.json` version is still the same on both — so a release re-run after a bump never bumps twice. You pick `patch`, `minor` or `major` for each such package (or give them with `--bumps`), and are asked nothing when no package changed. The CLI makes the bump itself, in your checkout, with no script or workflow: it sets the new version in each package's `package.json` and in the lockfiles at or above the package's folder that record it (the same files `npm version` touches, edited in place so nothing else changes), commits them as one `chore: bump <package> <version>, ...` commit and pushes it to the release branch. Only plain `major.minor.patch` versions are bumped. The bump lands before the PR is opened, so its commit is the PR's head and the suite runs once, on the release as it will merge. The Idea1 web app's release view makes the same bump through the GitHub API
426
- 3. Creates the release PR assigned to you, whose body is the release's approval chain: every contained PR — attributed by GitHub's commit association, so squash and rebase merges are covered — with its author and the assignee who approved it by merging. Commits with no PR are listed separately, split in two: the version bumps (a commit with no PR that changes only version files, meaning the `package.json` of a declared package and the lockfiles above it, whatever its name or author), which are release automation, and the direct commits. In a hotfix release the direct commits are the hotfix, listed as the change the PR's assignee reviews and approves by merging
427
- 4. In a planned release, refuses direct commits. A repository admin (the production root tier) can release them anyway — an explicit confirmation and a required reason for pushing them directly — and the reason is recorded as a comment on the PR naming the admin and every commit that had no PR, as well as in the PR body. Anyone who is not a repository admin just gets the refusal
428
- 5. In `merge` mode, enables auto-merge, or waits for the required CI/CD checks and merges normally. Checks that fail, never start or never finish stop the release; an admin override is available but takes an explicit confirmation and a required reason, and the exception is recorded as a comment on the PR before anything is merged
429
- 6. Opens GitHub Actions once it has merged the PR itself, where the merge to `main` has triggered the production deploy
447
+ 1. Requires you to hold the release role for the kind of release, checked against the GitHub account linked to your Idea1 user, to be on the branch being released with nothing uncommitted, unpushed or behind origin, and to have write access to the repository. Refuses when a PR from the release branch into the target is already open: one that does not follow the release workflow (it has no assignee, or its description carries no approval chain) has to be fixed in GitHub or closed, and a release PR is approved with `--approve` instead. The Idea1 web app refuses a release on the same terms
448
+ 2. Bumps versions, when the repository's `.idea1/settings.json` has a `release` section (see [Release Settings](#release-settings)). A versioned package needs a bump when its folder differs between the release branch and the target and its `package.json` version is still the same on both — so a release re-run after a bump never bumps twice. You pick `patch`, `minor` or `major` for each such package (or give them with `--bumps`), and are asked nothing when no package changed. The CLI computes the bump from your checkout, with no script or workflow: the new version in each package's `package.json` and in the lockfiles at or above the package's folder that record it (the same files `npm version` touches, edited in place so nothing else changes). The Idea1 platform commits them onto the release branch as one `chore: bump <package> <version>, ...` commit, as the Idea1 GitHub App, accepting only those version edits and only while the branch is still at your checkout's tip, and your checkout is fast-forwarded to it. Only plain `major.minor.patch` versions are bumped. The bump lands before the PR is opened, so its commit is the PR's head and the suite runs once, on the release as it will merge. The Idea1 web app's release view makes the same bump through the GitHub API. A content release has no bump step
449
+ 3. Creates the release PR assigned to you, whose body is the release's approval chain: every contained PR — attributed by GitHub's commit association, so squash and rebase merges are covered — with its author and the assignee who approved it by merging. Commits with no PR are listed separately, split in two: the version bumps (a commit with no PR that changes only version files, meaning the `package.json` of a declared package and the lockfiles above it, whatever its name or author), which are release automation, and the direct commits. In a hotfix release the direct commits are the hotfix, listed as the change the PR's assignee reviews and approves by merging. The approval chain is a delimited section of the body, between `<!-- approval-chain:start head=<sha> -->` and `<!-- approval-chain:end -->` (`head` is the branch tip it was rendered at), so it can be re-rendered while the PR is open without touching the line above it or anything added to the description
450
+ 4. In a planned release of a repository whose `release.releaseBranchChanges` is `approved-only` (the default), refuses direct commits. A repository admin (the production root tier) can release them anyway — an explicit confirmation and a required reason for pushing them directly — and the reason is recorded as a comment on the PR naming the admin and every commit that had no PR, as well as in the PR body. Anyone who is not a repository admin just gets the refusal. Where it is `direct-allowed`, the direct commits are not refused: they are listed like a hotfix's, as the change the PR's assignee reviews and approves by merging, and no admin or reason is needed
451
+ 5. In `merge` mode, brings the PR's change list up to date (see [The change list stays current](#the-change-list-stays-current)), waits for the required CI/CD checks, and has the Idea1 platform merge the PR as your recorded approval. Checks that fail, never start or never finish stop the release; an admin override is available but takes an explicit confirmation and a required reason, and the exception is recorded as a comment on the PR before the admin merges it
452
+ 6. Opens GitHub Actions once the PR has merged, where the merge to `main` has triggered the production deploy
430
453
 
431
454
  #### Releasing with approvals
432
455
 
@@ -448,10 +471,13 @@ In interactive mode the whole sequence runs as a background job (see `/jobs`); o
448
471
 
449
472
  #### Approving an open release
450
473
 
451
- `idea1 release --approve` finds the open release PR from the branch being released (the hotfix branch when it is checked out, else the base branch) into the target and merges it as its approver, on the same terms as the Idea1 web app: you need write access to the repository, the PR must follow the release workflow (an assignee, and the approval chain as its description), and you must be one of its assignees — anyone else is refused, and the PR is reassigned in GitHub or approved by its assignee. Then:
452
- - every check passed — merges now
453
- - checks still running — enables auto-merge, or waits for the checks and merges where GitHub can't auto-merge
454
- - a check failed — stops, unless a repository admin confirms the admin override, gives a reason, and has it recorded on the PR before the merge
474
+ `idea1 release --approve` finds the open release PR from the branch being released (the hotfix or content release branch when it is checked out or named with `--branch`, else the base branch) into the target and approves it, on the same terms as the Idea1 web app: you need write access to the repository, the PR must follow the release workflow (an assignee, and the approval chain as its description), you must be one of its assignees by the GitHub account linked to your Idea1 user, and you must hold the release role for its kind of release — anyone else is refused, and the PR is reassigned in GitHub or approved by its assignee. Its change list is brought up to date, then the CLI waits for the required checks:
475
+ - every check passed — the Idea1 platform checks the approver, the role and (for a content release) that every file it changes is content, records your approval on the PR and merges it as the Idea1 GitHub App (`POST v1/teams/active/github/repository/releases/approve`). The CLI never merges a release itself
476
+ - a check failed — stops, unless a repository admin confirms the admin override, gives a reason, and has it recorded on the PR before the admin merges it
477
+
478
+ #### The change list stays current
479
+
480
+ A release PR lists every change it contains, including a PR merged into the release branch after the release PR was opened. Before `--approve` or `merge` mode merges the PR or hands it to auto-merge, and again before a merge made after waiting for the checks, the CLI fetches origin, re-renders the approval chain section from the branch as it stands, and writes it to the PR with `gh pr edit --body-file` when it differs; the rest of the description stays as it is. Direct pushes a repository admin already recorded on the PR stay listed under their recorded reasons (a record comment posted by anyone without admin permission on the repository is ignored); a direct push that landed with no recorded reason goes through the same admin confirmation and reason as when a release is opened, or stops the merge. When the section cannot be re-rendered, the merge goes ahead only if the branch is still at the tip the section names, so the list is still complete; otherwise nothing is merged. The Idea1 platform re-renders the same section when it approves a release and after every push to the release, hotfix or content release branch, so a release PR merged in GitHub lists what it carries too.
455
481
 
456
482
  ### idea1 links
457
483
 
@@ -530,11 +556,18 @@ Create `.idea1/settings.json` in your repository root to configure repo-specific
530
556
 
531
557
  ### Release Settings
532
558
 
533
- The optional `release` section declares the repository folders `idea1 release` (and the Idea1 web app's release view) can version. A repository without it has no version bump step.
559
+ The optional `release` section configures `idea1 release` and the Idea1 web app's release view: how changes may reach the release branch, the repository folders a release versions, who may release, and the content release. A repository without `versionedPackages` has no version bump step.
534
560
 
535
561
  ```json
536
562
  {
537
563
  "release": {
564
+ "releaseBranchChanges": "approved-only",
565
+ "releaserTeam": "releasers",
566
+ "contentRelease": {
567
+ "branch": "working/content-website-release",
568
+ "paths": ["content-website/"],
569
+ "releaserTeam": "content-releasers"
570
+ },
538
571
  "versionedPackages": [
539
572
  { "name": "filekit", "label": "filekit package", "path": "packages/filekit" },
540
573
  { "name": "cli", "label": "idea1 CLI", "path": "omega/idea1-cli" }
@@ -543,7 +576,16 @@ The optional `release` section declares the repository folders `idea1 release` (
543
576
  }
544
577
  ```
545
578
 
579
+ - `releaseBranchChanges` - How changes may reach the release branch (`defaults.baseBranch`), the branch a planned release is cut from. This is the workflow's own policy, independent of how the repository host enforces it:
580
+ - `approved-only` (default) - every change reaches the release branch through its own approved change. A release carrying a commit made directly on the branch is refused until a repository admin records why it was made there (only the CLI releases one; the web app refuses it). The right setting for a repository whose release branch is protected so that only an approved change, or a recorded admin exception, can land
581
+ - `direct-allowed` - changes may also be made directly on the release branch. A release carries such a commit and lists it in the release PR for the releaser to review, with no admin and no reason recorded, in the CLI and the web app alike. The right setting for a repository where developers commit to the release branch
582
+
583
+ The release target branch (`defaults.releaseTargetBranch`, `main`) is not configurable: it only ever changes through a release PR, never by a direct push. `settings.local.json` can override this setting for a clone, which changes what that clone's `idea1 release` accepts; the web app reads only the committed `settings.json`
546
584
  - `versionedPackages` - The packages a release can bump: `name` (used by `--bumps`), `label` (shown in prompts) and `path` (the folder holding the package's `package.json`, relative to the repository root). A package needs a bump when its folder differs between the release branch and the target while its `package.json` version is the same on both
585
+ - `releaserTeam` - The slug of the GitHub team, in the repository's organization, whose members release the base and hotfix branches. Absent, anyone the release workflow admits releases them. Membership is read for the GitHub account linked to your Idea1 user, by the CLI (with `gh`) and again by the platform (as its GitHub App, which needs the organization's Members: Read permission)
586
+ - `contentRelease` - A release branch whose releases change only content: `branch` (released into `main` with no version bumps), `paths` (the repository folders or files a content release may change; a file outside them, or renamed from outside them, refuses the release) and `releaserTeam` (the GitHub team whose members approve changes into `branch` and release it; absent, anyone the workflow admits). Declared only with a branch and at least one path
587
+
588
+ The release roles, like `releaseBranchChanges`, are read by the platform from the committed `settings.json` alone, whatever a clone's `settings.local.json` says.
547
589
 
548
590
  ### Local Settings Overrides
549
591
 
@@ -653,7 +695,7 @@ its `.idea1/settings.json`.
653
695
 
654
696
  Every use of Claude Code goes through `src/services/claude.ts`, the only module that spawns `claude`. It always passes `--model` and `--effort`: a caller that states neither gets the documented defaults (`opus`, `high` — the same defaults a Claude session on an item offers), so a run never inherits whatever was last picked in an interactive session.
655
697
 
656
- Access to the Idea1 cloud platform — reading a project item's summary (by item or by the branch it implements), recording the item's workflow context, setting its workflow status, creating items, listing Projects, generating a branch name — goes through `src/services/platform.ts`. Its prompts are Handlebars templates in `src/prompts/`, rendered by `src/services/template-renderer.ts` like every other prompt. Today it drives the Idea1 MCP tools through Claude on `sonnet` at `medium` effort (these are simple tool calls, not implementation sessions); that transport is the module's implementation detail and may become direct calls to the platform API. A Claude session started on an item's branch (entering Agent Implementation, or joining an item) is the one place the model and effort are the user's choice (`--model`, `--effort`); a Claude Desktop session that names neither runs with Desktop's own. Opening URLs (Claude Desktop's `claude://` links) and terminal windows goes through `src/services/os-launcher.ts`, which uses only the tools macOS and Windows provide.
698
+ Access to the Idea1 cloud platform — reading a project item's summary (by item or by the branch it implements), recording the item's workflow context, setting its workflow status, creating items, listing Projects and team members, generating a branch name — goes through `src/services/platform.ts`, which calls the platform's REST API with the credential described in [Signing in](#signing-in). Claude is used there only to generate a branch name from an item's description, on `sonnet` at `medium` effort; the prompt is a Handlebars template in `src/prompts/`, rendered by `src/services/template-renderer.ts` like every other prompt. Agent sessions reach Idea1 through Claude's own Idea1 MCP connection. A Claude session started on an item's branch (entering Agent Implementation, or joining an item) is the one place the model and effort are the user's choice (`--model`, `--effort`); a Claude Desktop session that names neither runs with Desktop's own. Opening URLs (Claude Desktop's `claude://` links) and terminal windows goes through `src/services/os-launcher.ts`, which uses only the tools macOS and Windows provide.
657
699
 
658
700
  ## Requirements
659
701
 
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAMjD,eAAO,MAAM,WAAW,EAAE,OAyLzB,CAAC"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAMjD,eAAO,MAAM,WAAW,EAAE,OA4MzB,CAAC"}
@@ -30,7 +30,7 @@ export const helpCommand = {
30
30
  console.log(` ${chalk.bold('approve-pr')} Assignee approves by merging the PR, then cleans up - any branch, item or not`);
31
31
  console.log(` ${chalk.bold('join-project-item')} Set up a working environment on an item\'s existing branch`);
32
32
  console.log(` ${chalk.bold('update-branch')} Merge latest from source branch into current branch`);
33
- console.log(` ${chalk.bold('release')} Bump changed packages, open the release PR into main assigned to you, merge once checks pass (--approve: merge the open one)`);
33
+ console.log(` ${chalk.bold('release')} Bump changed packages, open the release PR into main assigned to you, have Idea1 merge it once checks pass (--approve: the open one)`);
34
34
  console.log();
35
35
  // Print the approval model - the assignee approves by merging, at both gates
36
36
  console.log(chalk.bold('APPROVAL MODEL:'));
@@ -53,17 +53,23 @@ export const helpCommand = {
53
53
  console.log(' merge it once the suite passes. No override, no status recorded.');
54
54
  console.log();
55
55
  console.log(` ${chalk.bold('Into main')} ${chalk.bold('release')} opens the release PR assigned to whoever ran it - the`);
56
- console.log(' releaser is the approver and merges it. Only working/release (a');
57
- console.log(' planned release) and working/hotfix (a hotfix release, run there)');
58
- console.log(' are released. A planned release needs no review: every change in');
59
- console.log(' it was already approved above, and a direct push stops it until a');
60
- console.log(' repository admin records why on the PR. A hotfix is pushed to');
61
- console.log(' working/hotfix directly and reviewed in its one release PR. The');
62
- console.log(' gate is the required CI/CD suite. Default mode creates the PR');
63
- console.log(' to merge in GitHub once green; --pr-mode merge (and --approve)');
64
- console.log(' enables auto-merge, or waits for the checks with gh and merges');
65
- console.log(' here. An emergency admin override needs a confirmation, a');
66
- console.log(' reason, and is recorded on the PR.');
56
+ console.log(' releaser is the approver. Only working/release (a planned release),');
57
+ console.log(' working/hotfix (a hotfix release, run there) and the content release');
58
+ console.log(' branch (release.contentRelease, a content release) are released, each');
59
+ console.log(' only by a member of its release team (release.releaserTeam,');
60
+ console.log(' release.contentRelease.releaserTeam). A planned release needs no');
61
+ console.log(' review: every change in it was already approved above, and');
62
+ console.log(' (release.releaseBranchChanges: approved-only) a direct push stops it');
63
+ console.log(' until a repository admin records why on the PR; with direct-allowed');
64
+ console.log(' it is listed for review. A hotfix is pushed to working/hotfix directly');
65
+ console.log(' and reviewed in its one release PR. A content release carries no');
66
+ console.log(' version bumps and changes only its paths. Idea1 commits the version');
67
+ console.log(' bump as its GitHub App. The gate is the required CI/CD suite. Default');
68
+ console.log(' mode creates the PR to merge in GitHub once green (a content release');
69
+ console.log(' is approved with --approve); --pr-mode merge and --approve wait for');
70
+ console.log(' the checks, then Idea1 records your approval and merges. An emergency');
71
+ console.log(' admin override needs a confirmation, a reason, and is recorded on the');
72
+ console.log(' PR.');
67
73
  console.log();
68
74
  // Print branching workflows
69
75
  console.log(chalk.bold('BRANCHING WORKFLOWS:'));
@@ -125,6 +131,15 @@ export const helpCommand = {
125
131
  }
126
132
  }
127
133
  logger.newline();
134
+ console.log(chalk.bold('SIGNING IN:'));
135
+ console.log();
136
+ console.log(' The CLI reaches idea1.ai through its API, signed in as you on one of your teams.');
137
+ console.log(` ${chalk.bold('login')} Sign in in the browser and pick the team; the sign-in is kept in the OS credential store`);
138
+ console.log(` ${chalk.bold('logout')} Revoke the sign-in and remove it from this computer`);
139
+ console.log(' A command that needs idea1.ai signs you in when you are not; an unattended run asks for `idea1 login` instead.');
140
+ console.log(` ${chalk.dim('IDEA1_TOKEN')} A bearer token every call uses instead of the sign-in (CI, with a team API client token)`);
141
+ console.log(` ${chalk.dim('IDEA1_API_BASE_URL')} The platform's API (default: https://api.idea1.ai)`);
142
+ console.log();
128
143
  console.log(chalk.bold('CONFIGURATION:'));
129
144
  console.log();
130
145
  console.log(' Settings are resolved in priority order:');
@@ -143,7 +158,10 @@ export const helpCommand = {
143
158
  console.log(` ${chalk.dim('defaults.integrationBranchTemplate')} Template for integration branch name`);
144
159
  console.log(` ${chalk.dim('defaults.integrationWorkBranchTemplate')} Template for work item branch name`);
145
160
  console.log(` ${chalk.dim('defaults.removeWorktreeAtState')} Workflow state that removes the worktree (default: Needs Approval for Release)`);
161
+ console.log(` ${chalk.dim('release.releaseBranchChanges')} How changes reach the release branch: approved-only (default) or direct-allowed`);
146
162
  console.log(` ${chalk.dim('release.versionedPackages')} Package folders a release bumps when they changed: { name, label, path }`);
163
+ console.log(` ${chalk.dim('release.releaserTeam')} GitHub team whose members release the base and hotfix branches (default: anyone)`);
164
+ console.log(` ${chalk.dim('release.contentRelease')} A content release: { branch, paths, releaserTeam }`);
147
165
  console.log(` ${chalk.dim('prompts.entryPoints')} Entry point prompts by workflow state: [{ name, template | templateFile }]`);
148
166
  console.log();
149
167
  console.log(' Worktree removal states: "Dev Implementation", "Needs Approval for Release", "Approved and Merged"');
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,uBAAuB;IAEpC,KAAK,CAAC,OAAO,CAAC,SAAiC;QAC7C,qBAAqB;QACrB,UAAU,EAAE,CAAC;QAEb,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAC7M,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClO,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC;QAClH,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;QACpH,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,wGAAwG,CAAC,CAAC;QAChJ,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,uGAAuG,CAAC,CAAC;QAC5J,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,4DAA4D,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,+EAA+E,CAAC,CAAC;QAC5I,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,kDAAkD,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,6FAA6F,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,iGAAiG,CAAC,CAAC;QAC9I,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,uEAAuE,CAAC,CAAC;QAC3H,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,oEAAoE,CAAC,CAAC;QACpH,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,mJAAmJ,CAAC,CAAC;QAC7L,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,6EAA6E;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,uDAAuD,CAAC,CAAC;QAChJ,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,wEAAwE,CAAC,CAAC;QACzH,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;QACxG,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,wDAAwD,CAAC,CAAC;QACvI,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC;QACzG,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;QACxG,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC;QACzG,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,EAAE,CAAC,CAAC;QACzG,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,+EAA+E,CAAC,CAAC;QAC3H,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,0CAA0C,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEpF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAE5C,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;gBAExD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAQ,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS;wBAC5B,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,OAAO,MAAM,CAAC,QAAQ,EAAE;wBAC9C,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAE/B,IAAI,WAAW,GAAG,EAAE,CAAC;oBACrB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACrC,CAAC;yBAAM,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;wBAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;wBACxC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,CAAC;yBAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;wBAC3B,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACzC,CAAC;oBAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,4GAA4G,CAAC,CAAC;QACjK,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,kEAAkE,CAAC,CAAC;QACzH,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,2DAA2D,CAAC,CAAC;QACzH,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,kHAAkH,CAAC,CAAC;QACzK,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,4DAA4D,CAAC,CAAC;QAC9H,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,uCAAuC,CAAC,CAAC;QAC/G,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,2FAA2F,CAAC,CAAC;QAC3J,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,0FAA0F,CAAC,CAAC;QACrJ,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,kGAAkG,CAAC,CAAC;QACvJ,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;QACpH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,mGAAmG,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,CAAC,qIAAqI,CAAC,CAAC;QACnJ,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC;QACzG,OAAO,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,gHAAgH,CAAC,CAAC;QAC9H,OAAO,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC;QAClH,OAAO,CAAC,GAAG,CAAC,yGAAyG,CAAC,CAAC;QACvH,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,kGAAkG,CAAC,CAAC;QAChH,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;QACpG,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ import { updateBranchCommand } from './update-branch.js';
16
16
  import { getProjectItemUrlCommand } from './get-project-item-url.js';
17
17
  import { shipLocalChangesCommand } from './ship-local-changes.js';
18
18
  import { openUrlCommand, registerUrlHandlerCommand, unregisterUrlHandlerCommand } from './url-handler.js';
19
+ import { loginCommand } from './login.js';
20
+ import { logoutCommand } from './logout.js';
19
21
  /**
20
22
  * Get a command by name or alias
21
23
  */
@@ -28,5 +30,5 @@ export declare function getAllCommands(): Command[];
28
30
  * Get all command names and aliases for autocomplete
29
31
  */
30
32
  export declare function getAllCommandNamesAndAliases(): string[];
31
- export { startCommand, startAgentImplementationCommand, joinProjectItemCommand, attachProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, helpCommand, releaseCommand, startDevImplementationCommand, readyForApprovalCommand, approvePrCommand, nextWorkflowStepCommand, updateBranchCommand, getProjectItemUrlCommand, shipLocalChangesCommand, registerUrlHandlerCommand, unregisterUrlHandlerCommand, openUrlCommand };
33
+ export { startCommand, startAgentImplementationCommand, joinProjectItemCommand, attachProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, helpCommand, releaseCommand, startDevImplementationCommand, readyForApprovalCommand, approvePrCommand, nextWorkflowStepCommand, updateBranchCommand, getProjectItemUrlCommand, shipLocalChangesCommand, registerUrlHandlerCommand, unregisterUrlHandlerCommand, openUrlCommand, loginCommand, logoutCommand };
32
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AA6C1G;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAM1C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAEvD;AAED,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,cAAc,EACd,6BAA6B,EAC7B,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,cAAc,EACf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA+C5C;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAM1C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAEvD;AAED,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,cAAc,EACd,6BAA6B,EAC7B,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,cAAc,EACd,YAAY,EACZ,aAAa,EACd,CAAC"}
@@ -15,6 +15,8 @@ import { updateBranchCommand } from './update-branch.js';
15
15
  import { getProjectItemUrlCommand } from './get-project-item-url.js';
16
16
  import { shipLocalChangesCommand } from './ship-local-changes.js';
17
17
  import { openUrlCommand, registerUrlHandlerCommand, unregisterUrlHandlerCommand } from './url-handler.js';
18
+ import { loginCommand } from './login.js';
19
+ import { logoutCommand } from './logout.js';
18
20
  /**
19
21
  * Command registry - Map-based for O(1) lookup
20
22
  */
@@ -47,6 +49,8 @@ registerCommand(getProjectItemUrlCommand);
47
49
  registerCommand(registerUrlHandlerCommand);
48
50
  registerCommand(unregisterUrlHandlerCommand);
49
51
  registerCommand(openUrlCommand);
52
+ registerCommand(loginCommand);
53
+ registerCommand(logoutCommand);
50
54
  // lower level operations, we can re-enable these if they end up being needed, but, going forward,
51
55
  // commands should be at a 'workflow' level rather than 'git' level.
52
56
  // registerCommand(closeWorktreeCommand);
@@ -74,5 +78,5 @@ export function getAllCommands() {
74
78
  export function getAllCommandNamesAndAliases() {
75
79
  return Array.from(commandRegistry.keys());
76
80
  }
77
- export { startCommand, startAgentImplementationCommand, joinProjectItemCommand, attachProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, helpCommand, releaseCommand, startDevImplementationCommand, readyForApprovalCommand, approvePrCommand, nextWorkflowStepCommand, updateBranchCommand, getProjectItemUrlCommand, shipLocalChangesCommand, registerUrlHandlerCommand, unregisterUrlHandlerCommand, openUrlCommand };
81
+ export { startCommand, startAgentImplementationCommand, joinProjectItemCommand, attachProjectItemCommand, closeWorktreeCommand, createWorktreeCommand, pushCommand, helpCommand, releaseCommand, startDevImplementationCommand, readyForApprovalCommand, approvePrCommand, nextWorkflowStepCommand, updateBranchCommand, getProjectItemUrlCommand, shipLocalChangesCommand, registerUrlHandlerCommand, unregisterUrlHandlerCommand, openUrlCommand, loginCommand, logoutCommand };
78
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from '../types/index.js';
2
+ export declare const loginCommand: Command;
3
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,eAAO,MAAM,YAAY,EAAE,OAW1B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { logger } from '../lib/logger.js';
2
+ import * as platform from '../services/platform.js';
3
+ import { apiBaseUrl, login } from '../services/platform-auth.js';
4
+ export const loginCommand = {
5
+ name: 'login',
6
+ aliases: [],
7
+ description: 'Sign in to idea1.ai in the browser, choosing the team the CLI works on',
8
+ options: [],
9
+ async execute() {
10
+ await login();
11
+ const user = await platform.getSignedInUser();
12
+ logger.success(`Signed in to ${apiBaseUrl()} as ${user.emailAddress}, on the team ${user.teamName}.`);
13
+ }
14
+ };
15
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,wEAAwE;IACrF,OAAO,EAAE,EAAE;IAEX,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,gBAAgB,UAAU,EAAE,OAAO,IAAI,CAAC,YAAY,iBAAiB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACxG,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from '../types/index.js';
2
+ export declare const logoutCommand: Command;
3
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIjD,eAAO,MAAM,aAAa,EAAE,OAa3B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { logger } from '../lib/logger.js';
2
+ import { apiBaseUrl, logout } from '../services/platform-auth.js';
3
+ export const logoutCommand = {
4
+ name: 'logout',
5
+ aliases: [],
6
+ description: 'Sign out of idea1.ai: revoke the CLI\'s sign-in and remove it from this computer',
7
+ options: [],
8
+ async execute() {
9
+ if (await logout()) {
10
+ logger.success(`Signed out of ${apiBaseUrl()}.`);
11
+ }
12
+ else {
13
+ logger.dim(`Not signed in to ${apiBaseUrl()}.`);
14
+ }
15
+ }
16
+ };
17
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,kFAAkF;IAC/F,OAAO,EAAE,EAAE;IAEX,KAAK,CAAC,OAAO;QACX,IAAI,MAAM,MAAM,EAAE,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,CAAC,iBAAiB,UAAU,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -2,14 +2,19 @@ import type { Command } from '../types/index.js';
2
2
  /**
3
3
  * Stage 2 of change management (change-management-policy.md, "Approval and release gates"): the release PR into
4
4
  * main. It is assigned to the person who runs the command - they are the releaser and the
5
- * approver, and their merge is the recorded approval. What this stage gates is the build - the
6
- * required CI/CD checks must pass before the merge.
5
+ * approver, and their merge is the recorded approval: in GitHub, or by the Idea1 platform once it
6
+ * has recorded their approval on the PR. Only a member of the release role for the kind of
7
+ * release may make it. What this stage gates is the build - the required CI/CD checks must pass
8
+ * before the merge.
7
9
  *
8
10
  * A planned release, from the base branch, needs no further review: every change in it was already
9
11
  * approved on its own PR, and the body lists them. A commit pushed straight to the base branch
10
- * stops it until a repository admin records why on the PR. A hotfix release, run on the hotfix
12
+ * stops it until a repository admin records why on the PR, unless the repository's
13
+ * `release.releaseBranchChanges` is `direct-allowed`, when the PR lists it for review. A hotfix release, run on the hotfix
11
14
  * branch, carries an isolated fix pushed straight to that branch; its PR is where the fix is
12
- * reviewed and approved, so its direct commits are listed rather than refused.
15
+ * reviewed and approved, so its direct commits are listed rather than refused. A content release,
16
+ * run on the content release branch, carries content changes each approved into that branch; it has
17
+ * no version bumps, changes only the content release's paths, and is merged only by the platform.
13
18
  *
14
19
  * Before the PR is opened, the packages that changed since the last release get their version
15
20
  * bumps, committed and pushed to the branch being released by this command. `--approve` instead
@@ -1 +1 @@
1
- {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAqPjD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,cAAc,EAAE,OAqI5B,CAAC"}
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAgQjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,cAAc,EAAE,OAiJ5B,CAAC"}