@getmonoceros/workbench 1.7.4 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,40 +1,40 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json",
3
3
  "id": "atlassian",
4
- "name": "Atlassian CLIs (Rovo Dev + Teamwork Graph)",
4
+ "name": "Atlassian",
5
5
  "version": "1.0.0",
6
- "description": "Bundles two Atlassian CLIs that share a single account: Rovo Dev (the `acli rovodev` AI agent) and Teamwork Graph (`twg`). Each tool can be toggled independently via the `rovodev` and `twg` options; both share `instance` / `email` / `apiToken` so credentials only live once in the yml. Auth state for both persists under /home/node/.{config/acli,rovodev,config/twg}, which Monoceros bind-mounts so logins survive `monoceros apply` rebuilds.",
6
+ "description": "Rovo Dev (`acli rovodev`) and Teamwork Graph (`twg`) CLIs sharing one Atlassian account. Auth persists across rebuilds.",
7
7
  "documentationURL": "https://developer.atlassian.com/cloud/",
8
8
  "options": {
9
9
  "rovodev": {
10
10
  "type": "boolean",
11
11
  "default": true,
12
- "description": "Install the Atlassian Command Line Interface (acli) which includes the Rovo Dev agent (`acli rovodev`). Default true. Set to false to skip when you only want twg."
12
+ "description": "Install acli (with the Rovo Dev agent)."
13
13
  },
14
14
  "twg": {
15
15
  "type": "boolean",
16
16
  "default": true,
17
- "description": "Install the Teamwork Graph CLI (twg). Default true. Set to false to skip when you only want rovodev."
17
+ "description": "Install twg (Teamwork Graph CLI)."
18
18
  },
19
19
  "instance": {
20
20
  "type": "string",
21
21
  "default": "",
22
- "description": "Atlassian site host, e.g. yoursite.atlassian.net. Required for twg's non-interactive login. Rovo Dev asks for the site itself on first `acli rovodev run` so this option isn't used by it."
22
+ "description": "Atlassian site host (`yoursite.atlassian.net`); required by twg."
23
23
  },
24
24
  "email": {
25
25
  "type": "string",
26
26
  "default": "",
27
- "description": "Email tied to your Atlassian account. Used for both Rovo Dev and twg non-interactive login when set together with apiToken."
27
+ "description": "Atlassian account email; used with `apiToken` for non-interactive login."
28
28
  },
29
29
  "apiToken": {
30
30
  "type": "string",
31
31
  "default": "",
32
- "description": "Atlassian API token from id.atlassian.com → Security → API tokens. Used for both Rovo Dev and twg non-interactive login when set together with email."
32
+ "description": "Atlassian API token (id.atlassian.com → Security → API tokens)."
33
33
  },
34
34
  "bitbucketToken": {
35
35
  "type": "string",
36
36
  "default": "",
37
- "description": "Optional Bitbucket API token (Bitbucket Cloud → Personal settings → App passwords). Only used by twg, for Bitbucket-specific commands. When set, twg's optional Bitbucket prompt is skipped; when empty, twg's prompt is skipped via an empty Enter — Bitbucket-specific twg commands will then ask the builder to run `twg login --force` interactively."
37
+ "description": "Optional Bitbucket app password; only needed for twg's Bitbucket commands."
38
38
  }
39
39
  },
40
40
  "customizations": {
@@ -50,9 +50,6 @@
50
50
  ".agents"
51
51
  ],
52
52
  "optionHints": ["instance", "email", "apiToken", "bitbucketToken"],
53
- "usageNotes": [
54
- "Bundles two CLIs that share one Atlassian account: `acli rovodev` (Rovo Dev agent) and `twg` (Teamwork Graph). Both default to on — set `rovodev: false` or `twg: false` to skip either install.",
55
- "Auth: email + apiToken below cover both tools. `instance` is required upfront for twg's auto-login; acli rovodev prompts for the site at first `acli rovodev run`. `bitbucketToken` is only needed if you use twg's Bitbucket commands. Skip the credentials entirely to log in interactively inside the container — state persists under home/.config/{acli,twg} and home/.rovodev."
56
- ]
53
+ "usageNotes": []
57
54
  }
58
55
  }
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json",
3
3
  "id": "claude-code",
4
- "name": "Claude Code CLI",
4
+ "name": "Claude Code",
5
5
  "version": "1.1.0",
6
- "description": "Installs the Anthropic Claude Code CLI globally via npm. Login (subscription / OAuth) lives inside the container under /home/node/.claude, which Monoceros bind-mounts from <container-dir>/home/.claude — so the login survives `monoceros apply` rebuilds and stays per-container. If an `apiKey` option is provided, ANTHROPIC_API_KEY is exported instead and the OAuth flow is bypassed.",
6
+ "description": "Anthropic's CLI coding assistant. OAuth/subscription login persists across container rebuilds.",
7
7
  "documentationURL": "https://docs.anthropic.com/en/docs/claude-code",
8
8
  "options": {
9
9
  "version": {
10
10
  "type": "string",
11
11
  "default": "latest",
12
- "description": "npm-style version spec for @anthropic-ai/claude-code (e.g. 'latest', '0.4.2', '^0.4')."
12
+ "description": "npm-style version spec (`latest`, `^0.4`, `0.4.2`)."
13
13
  },
14
14
  "apiKey": {
15
15
  "type": "string",
16
16
  "default": "",
17
- "description": "Optional Anthropic API key. When set, exported as ANTHROPIC_API_KEY for all shells in the container, which makes Claude Code use API auth instead of the subscription/OAuth flow."
17
+ "description": "`sk-ant-…` for API auth; empty for OAuth login on first run."
18
18
  }
19
19
  },
20
20
  "customizations": {
@@ -31,8 +31,6 @@
31
31
  }
32
32
  ],
33
33
  "optionHints": ["apiKey"],
34
- "usageNotes": [
35
- "Two auth modes: (1) set apiKey below for non-interactive API auth via ANTHROPIC_API_KEY, or (2) leave apiKey empty and run `claude login` once inside the container for the subscription/OAuth flow. Either way the resulting login state lives under home/.claude on the host and survives `monoceros apply` rebuilds."
36
- ]
34
+ "usageNotes": []
37
35
  }
38
36
  }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json",
3
3
  "id": "github-cli",
4
- "name": "GitHub CLI (gh)",
4
+ "name": "GitHub CLI",
5
5
  "version": "1.0.0",
6
- "description": "Installs the official GitHub CLI (`gh`) from the upstream apt repository. When an `apiToken` option is provided, its value is exported as GH_TOKEN via /etc/profile.d/ so `gh` works non-interactively in any login shell. Without a token, `gh` is installed but unauthenticated and the builder runs `gh auth login` once interactively; the resulting credentials persist under /home/node/.config/gh via Monoceros' bind-mount.",
6
+ "description": "The official `gh` CLI. Login persists across container rebuilds.",
7
7
  "documentationURL": "https://cli.github.com/",
8
8
  "options": {
9
9
  "apiToken": {
10
10
  "type": "string",
11
11
  "default": "",
12
- "description": "GitHub Personal Access Token (github.com → Settings → Developer settings → Personal access tokens → classic). Minimum scopes: repo, read:org, gist. When set, exported as GH_TOKEN in every login shell. Named `apiToken` to match the same option on the atlassian feature."
12
+ "description": "GitHub PAT (scopes: repo, read:org, gist); empty for `gh auth login` on first run."
13
13
  }
14
14
  },
15
15
  "customizations": {
@@ -20,8 +20,6 @@
20
20
  "x-monoceros": {
21
21
  "persistentHomePaths": [".config/gh"],
22
22
  "optionHints": ["apiToken"],
23
- "usageNotes": [
24
- "Two auth modes: (1) set apiToken below for non-interactive auth via GH_TOKEN (PAT scopes: repo, read:org, gist), or (2) leave apiToken empty and run `gh auth login` once inside the container for the browser-based OAuth flow with optional SSH-key upload. State persists under home/.config/gh so the login survives `monoceros apply` rebuilds."
25
- ]
23
+ "usageNotes": []
26
24
  }
27
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getmonoceros/workbench",
3
- "version": "1.7.4",
3
+ "version": "1.8.0",
4
4
  "description": "Monoceros workbench CLI — local, reproducible dev containers with first-class AI coding tooling.",
5
5
  "keywords": [
6
6
  "devcontainer",
@@ -1,84 +1,66 @@
1
- # Monoceros builder-global config for `monoceros apply`.
2
- #
3
- # This file is optional. Everything below is commented out by default;
4
- # a fresh-installed Monoceros behaves as if it didn't exist. To enable
5
- # a setting: remove the leading "# " from each line of that block.
6
- #
7
- # Two top-level sections:
8
- # - `defaults` — fall-throughs for container-yml fields (git
9
- # identity, per-feature options).
10
- # - `routing` — machine-global settings for the shared Traefik
11
- # singleton (only `hostPort` today).
12
- #
13
- # Per-container yml ALWAYS wins over these defaults. Setting a value
14
- # here just spares you from repeating it across every container.
1
+ # Global defaults for Monoceros containers. Values here fall through
2
+ # into any container yml that doesn't set them itself. Optional —
3
+ # Monoceros runs fine without this file.
15
4
 
16
5
  schemaVersion: 1
17
6
 
18
- # ──────────────────────────────────────────────────────────────────
19
- # defaults — fall-throughs for container-yml fields.
20
- # ──────────────────────────────────────────────────────────────────
21
-
22
7
  defaults:
23
- # Git committer identity for any container whose yml omits
24
- # `git.user`. Resolution order at apply time:
25
- # 1. container yml's `git.user`
26
- # 2. this `defaults.git.user`
27
- # 3. host's `git config --global user.{name,email}`
28
- # 4. `.monoceros/gitconfig` left by a previous apply
29
- # 5. interactive prompt (skipped in non-TTY)
8
+ # Git committer identity used for any container whose yml doesn't
9
+ # set its own `git.user`. apply prompts once when both fields are
10
+ # empty here AND on the host, then offers to persist the answer
11
+ # here so you don't get asked again on future containers.
30
12
  git:
31
- # user:
32
- # name: Your Name
33
- # email: you@example.com
13
+ user:
14
+ name: ''
15
+ email: ''
34
16
 
35
- # Per-feature option defaults, keyed by the feature's OCI ref.
36
- # A container yml that activates the same feature without setting a
37
- # given option falls back to whatever's here. The list below shows
38
- # EVERY option each Monoceros-curated feature accepts, with its
39
- # default value. Refs without an entry here behave as if every
40
- # option were unset.
17
+ # Shared per-feature options. Credentials and tokens that you'd
18
+ # otherwise repeat across every container yml live here, keyed by
19
+ # the feature's OCI ref. Setting a value here does NOT activate the
20
+ # feature in any container you still pick which containers use it
21
+ # via `monoceros init <name> --with=<feature>` or
22
+ # `monoceros add-feature <name> <feature>`. The defaults only kick
23
+ # in once a container has the feature on its list and leaves the
24
+ # option unset. Per-container values always win.
41
25
  features:
42
- # ── Anthropic Claude Code CLI ───────────────────────────────
26
+
27
+ # Claude Code — Anthropic's CLI coding assistant. OAuth/subscription
28
+ # login persists across container rebuilds.
29
+ # Options: version (npm spec), apiKey (`sk-ant-…` for API auth;
30
+ # empty for OAuth login on first run).
31
+ # See https://docs.anthropic.com/en/docs/claude-code for further information.
43
32
  # ghcr.io/getmonoceros/monoceros-features/claude-code:1:
44
- # version: latest # npm-style spec ('latest', '0.4.2', '^0.4')
45
- # apiKey: '' # Anthropic API key (`sk-ant-…`). Set →
46
- # # ANTHROPIC_API_KEY is exported and Claude
47
- # # Code uses API auth; empty OAuth /
48
- # # subscription login inside the container.
49
- #
50
- # ── GitHub CLI ──────────────────────────────────────────────
33
+ # version:
34
+ # apiKey:
35
+
36
+ # GitHub CLI The official `gh` CLI. Login persists across
37
+ # container rebuilds.
38
+ # Options: apiToken (GitHub PAT, scopes repo / read:org / gist;
39
+ # empty for `gh auth login` on first run).
40
+ # See https://cli.github.com/ for further information.
51
41
  # ghcr.io/getmonoceros/monoceros-features/github-cli:1:
52
- # apiToken: '' # GitHub PAT (github.com → Settings →
53
- # # Developer settings → PAT, scopes
54
- # # repo + read:org + gist). Set → exported
55
- # # as GH_TOKEN; empty → no auto-login,
56
- # # `gh auth login` interactively in shell.
57
- #
58
- # ── Atlassian (Rovo Dev acli + Teamwork Graph twg) ──────────
59
- # ghcr.io/getmonoceros/monoceros-features/atlassian:1:
60
- # rovodev: true # install acli + Rovo Dev agent
61
- # twg: true # install twg (Teamwork Graph CLI)
62
- # instance: '' # site host like 'yoursite.atlassian.net',
63
- # # required for twg auto-login (Rovo Dev
64
- # # asks for it on first `acli rovodev run`)
65
- # email: '' # Atlassian-account email — paired with
66
- # # apiToken for both CLIs' non-interactive
67
- # # login
68
- # apiToken: '' # Atlassian API token from
69
- # # id.atlassian.com → Security → API tokens
70
- # bitbucketToken: '' # optional, Bitbucket Cloud app-password.
71
- # # Used by twg's Bitbucket commands only.
42
+ # apiToken:
72
43
 
73
- # ──────────────────────────────────────────────────────────────────
74
- # routing machine-global Traefik singleton settings.
75
- # ──────────────────────────────────────────────────────────────────
44
+ # Atlassian — Rovo Dev (`acli rovodev`) and Teamwork Graph (`twg`)
45
+ # CLIs sharing one Atlassian account. Auth persists across rebuilds.
46
+ # Options: rovodev / twg (install toggles), instance
47
+ # (`yoursite.atlassian.net`), email + apiToken (Atlassian account),
48
+ # bitbucketToken (only for twg's Bitbucket commands).
49
+ # See https://developer.atlassian.com/cloud/ for further information.
50
+ # ghcr.io/getmonoceros/monoceros-features/atlassian:1:
51
+ # rovodev: true
52
+ # twg: true
53
+ # instance:
54
+ # email:
55
+ # apiToken:
56
+ # bitbucketToken:
76
57
 
77
58
  routing:
78
- # Host port the Traefik singleton binds. Default 80 → URLs are
79
- # http://<name>.localhost/. If port 80 is permanently held on this
80
- # machine (system nginx, Pi-hole, …) set any free port here, e.g.
81
- # 8080. URLs then become http://<name>.localhost:8080/. The
82
- # pre-flight check before apply / start / add-port reads this value
83
- # and asks you to free the port or change this setting on conflict.
84
- # hostPort: 80
59
+ # Host port the shared Traefik singleton binds. Default 80 →
60
+ # container URLs are http://<name>.localhost/. If port 80 is held by
61
+ # something else on your machine (system nginx, Pi-hole, …) set a
62
+ # free port here (e.g. 8080); URLs then become
63
+ # http://<name>.localhost:8080/. The pre-flight check before apply /
64
+ # start / add-port reads this and asks you to free the port or
65
+ # change this setting on conflict.
66
+ hostPort: 80