@getmonoceros/workbench 1.1.0 → 1.3.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.
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json",
3
+ "id": "atlassian",
4
+ "name": "Atlassian CLIs (Rovo Dev + Teamwork Graph)",
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.",
7
+ "documentationURL": "https://developer.atlassian.com/cloud/",
8
+ "options": {
9
+ "rovodev": {
10
+ "type": "boolean",
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."
13
+ },
14
+ "twg": {
15
+ "type": "boolean",
16
+ "default": true,
17
+ "description": "Install the Teamwork Graph CLI (twg). Default true. Set to false to skip when you only want rovodev."
18
+ },
19
+ "instance": {
20
+ "type": "string",
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."
23
+ },
24
+ "email": {
25
+ "type": "string",
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."
28
+ },
29
+ "apiToken": {
30
+ "type": "string",
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."
33
+ },
34
+ "bitbucketToken": {
35
+ "type": "string",
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."
38
+ }
39
+ },
40
+ "customizations": {
41
+ "vscode": {
42
+ "extensions": ["Atlassian.atlascode"]
43
+ }
44
+ },
45
+ "x-monoceros": {
46
+ "persistentHomePaths": [
47
+ ".config/acli",
48
+ ".rovodev",
49
+ ".config/twg",
50
+ ".agents"
51
+ ],
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
+ ]
57
+ }
58
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json",
3
+ "id": "claude-code",
4
+ "name": "Claude Code CLI",
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.",
7
+ "documentationURL": "https://docs.anthropic.com/en/docs/claude-code",
8
+ "options": {
9
+ "version": {
10
+ "type": "string",
11
+ "default": "latest",
12
+ "description": "npm-style version spec for @anthropic-ai/claude-code (e.g. 'latest', '0.4.2', '^0.4')."
13
+ },
14
+ "apiKey": {
15
+ "type": "string",
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."
18
+ }
19
+ },
20
+ "customizations": {
21
+ "vscode": {
22
+ "extensions": ["anthropic.claude-code"]
23
+ }
24
+ },
25
+ "x-monoceros": {
26
+ "persistentHomePaths": [".claude"],
27
+ "persistentHomeFiles": [
28
+ {
29
+ "path": ".claude.json",
30
+ "initialContent": "{}\n"
31
+ }
32
+ ],
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
+ ]
37
+ }
38
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json",
3
+ "id": "github-cli",
4
+ "name": "GitHub CLI (gh)",
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.",
7
+ "documentationURL": "https://cli.github.com/",
8
+ "options": {
9
+ "apiToken": {
10
+ "type": "string",
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."
13
+ }
14
+ },
15
+ "customizations": {
16
+ "vscode": {
17
+ "extensions": ["github.vscode-pull-request-github"]
18
+ }
19
+ },
20
+ "x-monoceros": {
21
+ "persistentHomePaths": [".config/gh"],
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
+ ]
26
+ }
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getmonoceros/workbench",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Monoceros workbench CLI — local, reproducible dev containers with first-class AI coding tooling.",
5
5
  "keywords": [
6
6
  "devcontainer",
@@ -27,6 +27,7 @@
27
27
  "files": [
28
28
  "dist",
29
29
  "templates",
30
+ "features",
30
31
  "README.md"
31
32
  ],
32
33
  "engines": {
@@ -36,6 +37,8 @@
36
37
  "start": "tsx src/bin.ts",
37
38
  "typecheck": "tsc --build",
38
39
  "test": "vitest run",
40
+ "manifests:sync": "node scripts/sync-feature-manifests.mjs",
41
+ "prebuild": "pnpm manifests:sync",
39
42
  "build": "tsup",
40
43
  "prepublishOnly": "pnpm typecheck && pnpm test && pnpm build"
41
44
  },