clawup 1.0.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.
Files changed (190) hide show
  1. package/README.md +245 -0
  2. package/dist/adapters/api-adapter.d.ts +76 -0
  3. package/dist/adapters/api-adapter.js +250 -0
  4. package/dist/adapters/api-adapter.js.map +1 -0
  5. package/dist/adapters/cli-adapter.d.ts +15 -0
  6. package/dist/adapters/cli-adapter.js +208 -0
  7. package/dist/adapters/cli-adapter.js.map +1 -0
  8. package/dist/adapters/index.d.ts +22 -0
  9. package/dist/adapters/index.js +32 -0
  10. package/dist/adapters/index.js.map +1 -0
  11. package/dist/adapters/types.d.ts +135 -0
  12. package/dist/adapters/types.js +14 -0
  13. package/dist/adapters/types.js.map +1 -0
  14. package/dist/bin.d.ts +8 -0
  15. package/dist/bin.js +221 -0
  16. package/dist/bin.js.map +1 -0
  17. package/dist/commands/config.d.ts +21 -0
  18. package/dist/commands/config.js +323 -0
  19. package/dist/commands/config.js.map +1 -0
  20. package/dist/commands/deploy.d.ts +7 -0
  21. package/dist/commands/deploy.js +13 -0
  22. package/dist/commands/deploy.js.map +1 -0
  23. package/dist/commands/destroy.d.ts +7 -0
  24. package/dist/commands/destroy.js +13 -0
  25. package/dist/commands/destroy.js.map +1 -0
  26. package/dist/commands/init.d.ts +13 -0
  27. package/dist/commands/init.js +698 -0
  28. package/dist/commands/init.js.map +1 -0
  29. package/dist/commands/list.d.ts +8 -0
  30. package/dist/commands/list.js +42 -0
  31. package/dist/commands/list.js.map +1 -0
  32. package/dist/commands/push.d.ts +7 -0
  33. package/dist/commands/push.js +19 -0
  34. package/dist/commands/push.js.map +1 -0
  35. package/dist/commands/redeploy.d.ts +7 -0
  36. package/dist/commands/redeploy.js +13 -0
  37. package/dist/commands/redeploy.js.map +1 -0
  38. package/dist/commands/secrets.d.ts +16 -0
  39. package/dist/commands/secrets.js +169 -0
  40. package/dist/commands/secrets.js.map +1 -0
  41. package/dist/commands/ssh.d.ts +9 -0
  42. package/dist/commands/ssh.js +108 -0
  43. package/dist/commands/ssh.js.map +1 -0
  44. package/dist/commands/status.d.ts +7 -0
  45. package/dist/commands/status.js +13 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/update.d.ts +7 -0
  48. package/dist/commands/update.js +126 -0
  49. package/dist/commands/update.js.map +1 -0
  50. package/dist/commands/validate.d.ts +7 -0
  51. package/dist/commands/validate.js +13 -0
  52. package/dist/commands/validate.js.map +1 -0
  53. package/dist/commands/webhooks.d.ts +7 -0
  54. package/dist/commands/webhooks.js +13 -0
  55. package/dist/commands/webhooks.js.map +1 -0
  56. package/dist/lib/__tests__/identity.test.d.ts +1 -0
  57. package/dist/lib/__tests__/identity.test.js +186 -0
  58. package/dist/lib/__tests__/identity.test.js.map +1 -0
  59. package/dist/lib/__tests__/validate-agent.test.d.ts +1 -0
  60. package/dist/lib/__tests__/validate-agent.test.js +38 -0
  61. package/dist/lib/__tests__/validate-agent.test.js.map +1 -0
  62. package/dist/lib/config.d.ts +69 -0
  63. package/dist/lib/config.js +218 -0
  64. package/dist/lib/config.js.map +1 -0
  65. package/dist/lib/constants.d.ts +5 -0
  66. package/dist/lib/constants.js +29 -0
  67. package/dist/lib/constants.js.map +1 -0
  68. package/dist/lib/exec.d.ts +24 -0
  69. package/dist/lib/exec.js +63 -0
  70. package/dist/lib/exec.js.map +1 -0
  71. package/dist/lib/prerequisites.d.ts +8 -0
  72. package/dist/lib/prerequisites.js +146 -0
  73. package/dist/lib/prerequisites.js.map +1 -0
  74. package/dist/lib/process.d.ts +18 -0
  75. package/dist/lib/process.js +37 -0
  76. package/dist/lib/process.js.map +1 -0
  77. package/dist/lib/pulumi.d.ts +37 -0
  78. package/dist/lib/pulumi.js +87 -0
  79. package/dist/lib/pulumi.js.map +1 -0
  80. package/dist/lib/tailscale.d.ts +75 -0
  81. package/dist/lib/tailscale.js +251 -0
  82. package/dist/lib/tailscale.js.map +1 -0
  83. package/dist/lib/tool-helpers.d.ts +15 -0
  84. package/dist/lib/tool-helpers.js +35 -0
  85. package/dist/lib/tool-helpers.js.map +1 -0
  86. package/dist/lib/ui.d.ts +26 -0
  87. package/dist/lib/ui.js +86 -0
  88. package/dist/lib/ui.js.map +1 -0
  89. package/dist/lib/update-check.d.ts +8 -0
  90. package/dist/lib/update-check.js +151 -0
  91. package/dist/lib/update-check.js.map +1 -0
  92. package/dist/lib/vendor.d.ts +34 -0
  93. package/dist/lib/vendor.js +128 -0
  94. package/dist/lib/vendor.js.map +1 -0
  95. package/dist/lib/workspace.d.ts +21 -0
  96. package/dist/lib/workspace.js +170 -0
  97. package/dist/lib/workspace.js.map +1 -0
  98. package/dist/tools/deploy.d.ts +16 -0
  99. package/dist/tools/deploy.js +181 -0
  100. package/dist/tools/deploy.js.map +1 -0
  101. package/dist/tools/destroy.d.ts +16 -0
  102. package/dist/tools/destroy.js +119 -0
  103. package/dist/tools/destroy.js.map +1 -0
  104. package/dist/tools/index.d.ts +20 -0
  105. package/dist/tools/index.js +34 -0
  106. package/dist/tools/index.js.map +1 -0
  107. package/dist/tools/push.d.ts +29 -0
  108. package/dist/tools/push.js +341 -0
  109. package/dist/tools/push.js.map +1 -0
  110. package/dist/tools/redeploy.d.ts +17 -0
  111. package/dist/tools/redeploy.js +181 -0
  112. package/dist/tools/redeploy.js.map +1 -0
  113. package/dist/tools/status.d.ts +16 -0
  114. package/dist/tools/status.js +205 -0
  115. package/dist/tools/status.js.map +1 -0
  116. package/dist/tools/validate.d.ts +16 -0
  117. package/dist/tools/validate.js +219 -0
  118. package/dist/tools/validate.js.map +1 -0
  119. package/dist/tools/webhooks.d.ts +17 -0
  120. package/dist/tools/webhooks.js +181 -0
  121. package/dist/tools/webhooks.js.map +1 -0
  122. package/dist/types.d.ts +6 -0
  123. package/dist/types.js +10 -0
  124. package/dist/types.js.map +1 -0
  125. package/infra/Pulumi.yaml +6 -0
  126. package/infra/dist/components/cloud-init.js +412 -0
  127. package/infra/dist/components/config-generator.js +254 -0
  128. package/infra/dist/components/hetzner-agent.js +162 -0
  129. package/infra/dist/components/index.js +18 -0
  130. package/infra/dist/components/openclaw-agent.js +287 -0
  131. package/infra/dist/components/shared.js +132 -0
  132. package/infra/dist/components/types.js +6 -0
  133. package/infra/dist/index.js +387 -0
  134. package/infra/dist/shared-vpc.js +167 -0
  135. package/infra/node_modules/@clawup/core/dist/__tests__/schemas.test.d.ts +2 -0
  136. package/infra/node_modules/@clawup/core/dist/__tests__/schemas.test.d.ts.map +1 -0
  137. package/infra/node_modules/@clawup/core/dist/__tests__/schemas.test.js +124 -0
  138. package/infra/node_modules/@clawup/core/dist/__tests__/schemas.test.js.map +1 -0
  139. package/infra/node_modules/@clawup/core/dist/coding-agent-registry.d.ts +32 -0
  140. package/infra/node_modules/@clawup/core/dist/coding-agent-registry.d.ts.map +1 -0
  141. package/infra/node_modules/@clawup/core/dist/coding-agent-registry.js +56 -0
  142. package/infra/node_modules/@clawup/core/dist/coding-agent-registry.js.map +1 -0
  143. package/infra/node_modules/@clawup/core/dist/constants.d.ts +137 -0
  144. package/infra/node_modules/@clawup/core/dist/constants.d.ts.map +1 -0
  145. package/infra/node_modules/@clawup/core/dist/constants.js +314 -0
  146. package/infra/node_modules/@clawup/core/dist/constants.js.map +1 -0
  147. package/infra/node_modules/@clawup/core/dist/dep-registry.d.ts +25 -0
  148. package/infra/node_modules/@clawup/core/dist/dep-registry.d.ts.map +1 -0
  149. package/infra/node_modules/@clawup/core/dist/dep-registry.js +46 -0
  150. package/infra/node_modules/@clawup/core/dist/dep-registry.js.map +1 -0
  151. package/infra/node_modules/@clawup/core/dist/deps.d.ts +18 -0
  152. package/infra/node_modules/@clawup/core/dist/deps.d.ts.map +1 -0
  153. package/infra/node_modules/@clawup/core/dist/deps.js +39 -0
  154. package/infra/node_modules/@clawup/core/dist/deps.js.map +1 -0
  155. package/infra/node_modules/@clawup/core/dist/identity.d.ts +20 -0
  156. package/infra/node_modules/@clawup/core/dist/identity.d.ts.map +1 -0
  157. package/infra/node_modules/@clawup/core/dist/identity.js +217 -0
  158. package/infra/node_modules/@clawup/core/dist/identity.js.map +1 -0
  159. package/infra/node_modules/@clawup/core/dist/index.d.ts +18 -0
  160. package/infra/node_modules/@clawup/core/dist/index.d.ts.map +1 -0
  161. package/infra/node_modules/@clawup/core/dist/index.js +52 -0
  162. package/infra/node_modules/@clawup/core/dist/index.js.map +1 -0
  163. package/infra/node_modules/@clawup/core/dist/plugin-registry.d.ts +13 -0
  164. package/infra/node_modules/@clawup/core/dist/plugin-registry.d.ts.map +1 -0
  165. package/infra/node_modules/@clawup/core/dist/plugin-registry.js +24 -0
  166. package/infra/node_modules/@clawup/core/dist/plugin-registry.js.map +1 -0
  167. package/infra/node_modules/@clawup/core/dist/schemas/identity.d.ts +74 -0
  168. package/infra/node_modules/@clawup/core/dist/schemas/identity.d.ts.map +1 -0
  169. package/infra/node_modules/@clawup/core/dist/schemas/identity.js +45 -0
  170. package/infra/node_modules/@clawup/core/dist/schemas/identity.js.map +1 -0
  171. package/infra/node_modules/@clawup/core/dist/schemas/index.d.ts +6 -0
  172. package/infra/node_modules/@clawup/core/dist/schemas/index.d.ts.map +1 -0
  173. package/infra/node_modules/@clawup/core/dist/schemas/index.js +13 -0
  174. package/infra/node_modules/@clawup/core/dist/schemas/index.js.map +1 -0
  175. package/infra/node_modules/@clawup/core/dist/schemas/manifest.d.ts +159 -0
  176. package/infra/node_modules/@clawup/core/dist/schemas/manifest.d.ts.map +1 -0
  177. package/infra/node_modules/@clawup/core/dist/schemas/manifest.js +54 -0
  178. package/infra/node_modules/@clawup/core/dist/schemas/manifest.js.map +1 -0
  179. package/infra/node_modules/@clawup/core/dist/skills.d.ts +30 -0
  180. package/infra/node_modules/@clawup/core/dist/skills.d.ts.map +1 -0
  181. package/infra/node_modules/@clawup/core/dist/skills.js +52 -0
  182. package/infra/node_modules/@clawup/core/dist/skills.js.map +1 -0
  183. package/infra/node_modules/@clawup/core/dist/types.d.ts +59 -0
  184. package/infra/node_modules/@clawup/core/dist/types.d.ts.map +1 -0
  185. package/infra/node_modules/@clawup/core/dist/types.js +30 -0
  186. package/infra/node_modules/@clawup/core/dist/types.js.map +1 -0
  187. package/infra/node_modules/@clawup/core/package.json +46 -0
  188. package/infra/package.json +12 -0
  189. package/package.json +43 -0
  190. package/scripts/postinstall.mjs +395 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.js","sourceRoot":"","sources":["../../src/__tests__/schemas.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Coding agent registry — defines how each coding agent CLI is installed and configured.
3
+ *
4
+ * Similar to DEP_REGISTRY but for coding agent CLIs (Claude Code, Codex, Amp, etc.)
5
+ * that OpenClaw uses as its backend for AI-assisted coding sessions.
6
+ */
7
+ export interface CodingAgentEntry {
8
+ /** Human-readable display name */
9
+ displayName: string;
10
+ /** Bash script to install the coding agent CLI (runs as ubuntu user via sudo) */
11
+ installScript: string;
12
+ /**
13
+ * Bash script to configure the agent's default model.
14
+ * Receives ${MODEL} variable with the stripped model name (e.g., "claude-opus-4-6").
15
+ */
16
+ configureModelScript: string;
17
+ /** OpenClaw cliBackends entry for openclaw.json */
18
+ cliBackend: {
19
+ command: string;
20
+ args: string[];
21
+ output: string;
22
+ modelArg: string;
23
+ sessionArg: string;
24
+ sessionMode: string;
25
+ systemPromptArg: string;
26
+ systemPromptWhen: string;
27
+ imageArg?: string;
28
+ imageMode?: string;
29
+ };
30
+ }
31
+ export declare const CODING_AGENT_REGISTRY: Record<string, CodingAgentEntry>;
32
+ //# sourceMappingURL=coding-agent-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-agent-registry.d.ts","sourceRoot":"","sources":["../src/coding-agent-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mDAAmD;IACnD,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA6ClE,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * Coding agent registry — defines how each coding agent CLI is installed and configured.
4
+ *
5
+ * Similar to DEP_REGISTRY but for coding agent CLIs (Claude Code, Codex, Amp, etc.)
6
+ * that OpenClaw uses as its backend for AI-assisted coding sessions.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CODING_AGENT_REGISTRY = void 0;
10
+ exports.CODING_AGENT_REGISTRY = {
11
+ "claude-code": {
12
+ displayName: "Claude Code",
13
+ installScript: `
14
+ # Install Claude Code CLI for ubuntu user
15
+ echo "Installing Claude Code..."
16
+ sudo -u ubuntu bash << 'CLAUDE_CODE_INSTALL_SCRIPT' || echo "WARNING: Claude Code installation failed. Install manually with: curl -fsSL https://claude.ai/install.sh | bash"
17
+ set -e
18
+ cd ~
19
+
20
+ # Install Claude Code via official installer
21
+ curl -fsSL https://claude.ai/install.sh | bash
22
+
23
+ # Add .local/bin to PATH in .bashrc if not already there
24
+ if ! grep -q '.local/bin' ~/.bashrc; then
25
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
26
+ fi
27
+
28
+ # Verify installation
29
+ BINARY_PATH="$HOME/.local/bin/claude"
30
+ if [ -x "$BINARY_PATH" ] || command -v claude &>/dev/null; then
31
+ echo "Claude Code installed successfully"
32
+ else
33
+ echo "WARNING: Claude Code installation may have failed"
34
+ exit 1
35
+ fi
36
+ CLAUDE_CODE_INSTALL_SCRIPT`.trim(),
37
+ configureModelScript: `
38
+ # Configure Claude Code default model
39
+ sudo -u ubuntu bash -c '
40
+ mkdir -p ~/.claude
41
+ echo '"'"'{"model":"\${MODEL}","fastMode":true}'"'"' > ~/.claude/settings.json
42
+ echo "Claude Code default model set to \${MODEL} (fast mode)"
43
+ '`.trim(),
44
+ cliBackend: {
45
+ command: "claude",
46
+ args: ["-p", "--output-format", "stream-json", "--verbose"],
47
+ output: "stream-json",
48
+ modelArg: "--model",
49
+ sessionArg: "--resume",
50
+ sessionMode: "id",
51
+ systemPromptArg: "--append-system-prompt",
52
+ systemPromptWhen: "always",
53
+ },
54
+ },
55
+ };
56
+ //# sourceMappingURL=coding-agent-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-agent-registry.js","sourceRoot":"","sources":["../src/coding-agent-registry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA2BU,QAAA,qBAAqB,GAAqC;IACrE,aAAa,EAAE;QACb,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;2BAuBQ,CAAC,IAAI,EAAE;QAC9B,oBAAoB,EAAE;;;;;;EAMxB,CAAC,IAAI,EAAE;QACL,UAAU,EAAE;YACV,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,CAAC;YAC3D,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,wBAAwB;YACzC,gBAAgB,EAAE,QAAQ;SAC3B;KACF;CACF,CAAC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Constants, preset definitions, aliases, and defaults
3
+ */
4
+ /**
5
+ * Built-in agent identities.
6
+ * Each entry points to a subfolder in the army-identities Git repo.
7
+ * The identity.yaml inside provides displayName, role, volumeSize, plugins, etc.
8
+ */
9
+ export declare const BUILT_IN_IDENTITIES: Record<string, {
10
+ path: string;
11
+ label: string;
12
+ hint: string;
13
+ }>;
14
+ /** Map agent aliases to role keys */
15
+ export declare const AGENT_ALIASES: Record<string, string>;
16
+ /** Available cloud providers */
17
+ export declare const PROVIDERS: readonly [{
18
+ readonly value: "aws";
19
+ readonly label: "AWS";
20
+ readonly hint: "Amazon Web Services EC2 instances";
21
+ }, {
22
+ readonly value: "hetzner";
23
+ readonly label: "Hetzner";
24
+ readonly hint: "Hetzner Cloud servers (EU/US)";
25
+ }];
26
+ /** Common AWS regions for selection */
27
+ export declare const AWS_REGIONS: {
28
+ value: string;
29
+ label: string;
30
+ }[];
31
+ /** Hetzner Cloud locations */
32
+ export declare const HETZNER_LOCATIONS: {
33
+ value: string;
34
+ label: string;
35
+ }[];
36
+ /** Instance type options (AWS) */
37
+ export declare const INSTANCE_TYPES: {
38
+ value: string;
39
+ label: string;
40
+ }[];
41
+ /** Hetzner server types — EU locations (cx shared vCPU) */
42
+ export declare const HETZNER_SERVER_TYPES_EU: {
43
+ value: string;
44
+ label: string;
45
+ }[];
46
+ /** Hetzner server types — US locations (cpx shared vCPU, cx not available) */
47
+ export declare const HETZNER_SERVER_TYPES_US: {
48
+ value: string;
49
+ label: string;
50
+ }[];
51
+ /** US Hetzner locations (cx types not available) */
52
+ export declare const HETZNER_US_LOCATIONS: string[];
53
+ /** Get server type options for a Hetzner location */
54
+ export declare function hetznerServerTypes(location: string): {
55
+ value: string;
56
+ label: string;
57
+ }[];
58
+ /** Default SSH user for agent instances (Ubuntu 24.04 AMI default) */
59
+ export declare const SSH_USER = "ubuntu";
60
+ /** Estimated monthly cost per instance type (AWS) */
61
+ export declare const COST_ESTIMATES: Record<string, number>;
62
+ /** Estimated monthly cost per server type (Hetzner) */
63
+ export declare const HETZNER_COST_ESTIMATES: Record<string, number>;
64
+ /** Manifest filename */
65
+ export declare const MANIFEST_FILE = "clawup.yaml";
66
+ /** Config directory under home (~/.clawup/configs/) */
67
+ export declare const CONFIG_DIR = ".clawup/configs";
68
+ /** Plugins config subdirectory name */
69
+ export declare const PLUGINS_DIR = "plugins";
70
+ /**
71
+ * Supported model providers with their API key prefixes and available models
72
+ */
73
+ export declare const MODEL_PROVIDERS: {
74
+ readonly anthropic: {
75
+ readonly name: "Anthropic";
76
+ readonly envVar: "ANTHROPIC_API_KEY";
77
+ readonly keyPrefix: "sk-ant-";
78
+ readonly models: readonly [{
79
+ readonly value: "anthropic/claude-opus-4-6";
80
+ readonly label: "Claude Opus 4.6 (Recommended)";
81
+ }, {
82
+ readonly value: "anthropic/claude-sonnet-4-5";
83
+ readonly label: "Claude Sonnet 4.5";
84
+ }, {
85
+ readonly value: "anthropic/claude-haiku-4-5";
86
+ readonly label: "Claude Haiku 4.5";
87
+ }];
88
+ };
89
+ };
90
+ /**
91
+ * Build the Tailscale hostname for an agent.
92
+ * Includes the stack name to avoid conflicts across deployments.
93
+ * Example: "dev-agent-pm", "prod-agent-eng"
94
+ */
95
+ export declare function tailscaleHostname(stackName: string, agentName: string): string;
96
+ /** Key instructions for onboarding prompts */
97
+ export declare const KEY_INSTRUCTIONS: {
98
+ readonly anthropicApiKey: {
99
+ readonly title: "Anthropic API Key";
100
+ readonly steps: readonly ["To get your Anthropic API key:", "1. Go to https://console.anthropic.com/account/keys", "2. Click \"Create Key\"", "3. Copy the key (starts with sk-ant-)"];
101
+ };
102
+ readonly tailscaleAuthKey: {
103
+ readonly title: "Tailscale Auth Key";
104
+ readonly steps: readonly ["To get your Tailscale auth key:", "1. Go to https://login.tailscale.com/admin/settings/keys", "2. Click \"Generate auth key\"", "3. Enable \"Reusable\" AND \"Ephemeral\" — ephemeral nodes auto-remove when offline", "4. Copy the key (starts with tskey-auth-)"];
105
+ };
106
+ readonly tailscaleApiKey: {
107
+ readonly title: "Tailscale API Key (optional)";
108
+ readonly steps: readonly ["For reliable cleanup of Tailscale devices during destroy:", "1. Go to https://login.tailscale.com/admin/settings/keys", "2. Under \"API access tokens\", click \"Generate access token\"", "3. Copy the key (starts with tskey-api-)", "4. This is optional but recommended for clean teardowns"];
109
+ };
110
+ readonly tailnetDnsName: {
111
+ readonly title: "Tailnet DNS Name";
112
+ readonly steps: readonly ["To find your Tailnet DNS name:", "1. Go to https://login.tailscale.com/admin/dns", "2. Look for your tailnet name at the top", "3. It looks like \"tailXXXXX.ts.net\" or a custom domain"];
113
+ };
114
+ readonly slackCredentials: {
115
+ readonly title: "Slack App Setup";
116
+ readonly steps: readonly ["Create a Slack app for each agent using the manifest shown below:", "1. Go to https://api.slack.com/apps → \"Create New App\" → \"From a manifest\"", "2. Select your workspace, paste the JSON manifest, and create the app", "3. Go to \"OAuth & Permissions\" — copy the Bot Token (xoxb-...)", "4. Under \"Basic Information\" → \"App-Level Tokens\", generate a token", " with the connections:write scope — copy it (xapp-...)"];
117
+ };
118
+ readonly linearApiKey: {
119
+ readonly title: "Linear API Key";
120
+ readonly steps: readonly ["Create a separate Linear account for each agent (used by openclaw-linear plugin):", "1. Invite you+agentname@domain.com to your Linear workspace", " (plus-addressing forwards to your inbox — no new email needed)", " Follow the link in the invite email to create the account and join the org", "2. Go to Settings → Security & Access → Personal API keys → \"New API key\"", "3. Copy the key (starts with lin_api_)"];
121
+ };
122
+ readonly githubToken: {
123
+ readonly title: "GitHub Token";
124
+ readonly steps: readonly ["To get a GitHub personal access token for gh CLI:", "1. Go to https://github.com/settings/tokens?type=beta", "2. Click \"Generate new token\" → Fine-grained token", "3. Select repositories, set expiration, and permissions (e.g., repo, read:org)", "4. Copy the token (starts with github_pat_ or ghp_)"];
125
+ };
126
+ readonly braveApiKey: {
127
+ readonly title: "Brave Search API Key";
128
+ readonly steps: readonly ["To get a Brave Search API key for web search:", "1. Go to https://brave.com/search/api/", "2. Sign up or log in to get an API key", "3. Copy the key (starts with BSA)"];
129
+ };
130
+ readonly hcloudToken: {
131
+ readonly title: "Hetzner Cloud API Token";
132
+ readonly steps: readonly ["To get your Hetzner Cloud API token:", "1. Go to https://console.hetzner.cloud/", "2. Select your project (or create one)", "3. Go to Security → API Tokens", "4. Click \"Generate API Token\" with Read & Write permissions", "5. Copy the token"];
133
+ };
134
+ };
135
+ /** Generate a Slack app manifest JSON for a given agent */
136
+ export declare function slackAppManifest(agentName: string): string;
137
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAgB7F,CAAC;AAGF,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,SAAS;;;;;;;;EAGZ,CAAC;AAEX,uCAAuC;AACvC,eAAO,MAAM,WAAW;;;GAQvB,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,iBAAiB;;;GAK7B,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,cAAc;;;GAI1B,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB;;;GAInC,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;GAInC,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,oBAAoB,UAAiB,CAAC;AAEnD,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;IAIlD;AAED,sEAAsE;AACtE,eAAO,MAAM,QAAQ,WAAW,CAAC;AAEjC,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIjD,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOzD,CAAC;AAEF,wBAAwB;AACxB,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAE3C,uDAAuD;AACvD,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C,uCAAuC;AACvC,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAWlB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FnB,CAAC;AAEX,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAuF1D"}
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ /**
3
+ * Constants, preset definitions, aliases, and defaults
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.KEY_INSTRUCTIONS = exports.MODEL_PROVIDERS = exports.PLUGINS_DIR = exports.CONFIG_DIR = exports.MANIFEST_FILE = exports.HETZNER_COST_ESTIMATES = exports.COST_ESTIMATES = exports.SSH_USER = exports.HETZNER_US_LOCATIONS = exports.HETZNER_SERVER_TYPES_US = exports.HETZNER_SERVER_TYPES_EU = exports.INSTANCE_TYPES = exports.HETZNER_LOCATIONS = exports.AWS_REGIONS = exports.PROVIDERS = exports.AGENT_ALIASES = exports.BUILT_IN_IDENTITIES = void 0;
7
+ exports.hetznerServerTypes = hetznerServerTypes;
8
+ exports.tailscaleHostname = tailscaleHostname;
9
+ exports.slackAppManifest = slackAppManifest;
10
+ /**
11
+ * Built-in agent identities.
12
+ * Each entry points to a subfolder in the army-identities Git repo.
13
+ * The identity.yaml inside provides displayName, role, volumeSize, plugins, etc.
14
+ */
15
+ exports.BUILT_IN_IDENTITIES = {
16
+ pm: {
17
+ path: "https://github.com/stepandel/army-identities#pm",
18
+ label: "Juno (PM)",
19
+ hint: "Break down tickets, research, plan and sequence work, track progress, unblock teams",
20
+ },
21
+ eng: {
22
+ path: "https://github.com/stepandel/army-identities#eng",
23
+ label: "Titus (Engineer)",
24
+ hint: "Lead engineering, coding, shipping",
25
+ },
26
+ tester: {
27
+ path: "https://github.com/stepandel/army-identities#tester",
28
+ label: "Scout (QA)",
29
+ hint: "Quality assurance, verification, bug hunting",
30
+ },
31
+ };
32
+ /** Map agent aliases to role keys */
33
+ exports.AGENT_ALIASES = {
34
+ juno: "pm",
35
+ titus: "eng",
36
+ scout: "tester",
37
+ };
38
+ /** Available cloud providers */
39
+ exports.PROVIDERS = [
40
+ { value: "aws", label: "AWS", hint: "Amazon Web Services EC2 instances" },
41
+ { value: "hetzner", label: "Hetzner", hint: "Hetzner Cloud servers (EU/US)" },
42
+ ];
43
+ /** Common AWS regions for selection */
44
+ exports.AWS_REGIONS = [
45
+ { value: "us-east-1", label: "US East (N. Virginia)" },
46
+ { value: "us-east-2", label: "US East (Ohio)" },
47
+ { value: "us-west-2", label: "US West (Oregon)" },
48
+ { value: "eu-west-1", label: "EU (Ireland)" },
49
+ { value: "eu-central-1", label: "EU (Frankfurt)" },
50
+ { value: "ap-southeast-1", label: "Asia Pacific (Singapore)" },
51
+ { value: "ap-northeast-1", label: "Asia Pacific (Tokyo)" },
52
+ ];
53
+ /** Hetzner Cloud locations */
54
+ exports.HETZNER_LOCATIONS = [
55
+ { value: "fsn1", label: "Falkenstein, DE (fsn1)" },
56
+ { value: "nbg1", label: "Nuremberg, DE (nbg1)" },
57
+ { value: "hel1", label: "Helsinki, FI (hel1)" },
58
+ { value: "ash", label: "Ashburn, US (ash)" },
59
+ ];
60
+ /** Instance type options (AWS) */
61
+ exports.INSTANCE_TYPES = [
62
+ { value: "t3.small", label: "t3.small — 2 vCPU, 2 GB (~$15/mo)" },
63
+ { value: "t3.medium", label: "t3.medium — 2 vCPU, 4 GB (~$30/mo)" },
64
+ { value: "t3.large", label: "t3.large — 2 vCPU, 8 GB (~$60/mo)" },
65
+ ];
66
+ /** Hetzner server types — EU locations (cx shared vCPU) */
67
+ exports.HETZNER_SERVER_TYPES_EU = [
68
+ { value: "cx22", label: "cx22 — 2 vCPU, 4 GB (~$4/mo)" },
69
+ { value: "cx32", label: "cx32 — 4 vCPU, 8 GB (~$7/mo)" },
70
+ { value: "cx42", label: "cx42 — 8 vCPU, 16 GB (~$14/mo)" },
71
+ ];
72
+ /** Hetzner server types — US locations (cpx shared vCPU, cx not available) */
73
+ exports.HETZNER_SERVER_TYPES_US = [
74
+ { value: "cpx21", label: "cpx21 — 3 vCPU, 4 GB (~$5/mo)" },
75
+ { value: "cpx31", label: "cpx31 — 4 vCPU, 8 GB (~$9/mo)" },
76
+ { value: "cpx41", label: "cpx41 — 8 vCPU, 16 GB (~$16/mo)" },
77
+ ];
78
+ /** US Hetzner locations (cx types not available) */
79
+ exports.HETZNER_US_LOCATIONS = ["ash", "hil"];
80
+ /** Get server type options for a Hetzner location */
81
+ function hetznerServerTypes(location) {
82
+ return exports.HETZNER_US_LOCATIONS.includes(location)
83
+ ? exports.HETZNER_SERVER_TYPES_US
84
+ : exports.HETZNER_SERVER_TYPES_EU;
85
+ }
86
+ /** Default SSH user for agent instances (Ubuntu 24.04 AMI default) */
87
+ exports.SSH_USER = "ubuntu";
88
+ /** Estimated monthly cost per instance type (AWS) */
89
+ exports.COST_ESTIMATES = {
90
+ "t3.small": 15,
91
+ "t3.medium": 30,
92
+ "t3.large": 60,
93
+ };
94
+ /** Estimated monthly cost per server type (Hetzner) */
95
+ exports.HETZNER_COST_ESTIMATES = {
96
+ cx22: 4,
97
+ cx32: 7,
98
+ cx42: 14,
99
+ cpx21: 5,
100
+ cpx31: 9,
101
+ cpx41: 16,
102
+ };
103
+ /** Manifest filename */
104
+ exports.MANIFEST_FILE = "clawup.yaml";
105
+ /** Config directory under home (~/.clawup/configs/) */
106
+ exports.CONFIG_DIR = ".clawup/configs";
107
+ /** Plugins config subdirectory name */
108
+ exports.PLUGINS_DIR = "plugins";
109
+ /**
110
+ * Supported model providers with their API key prefixes and available models
111
+ */
112
+ exports.MODEL_PROVIDERS = {
113
+ anthropic: {
114
+ name: "Anthropic",
115
+ envVar: "ANTHROPIC_API_KEY",
116
+ keyPrefix: "sk-ant-",
117
+ models: [
118
+ { value: "anthropic/claude-opus-4-6", label: "Claude Opus 4.6 (Recommended)" },
119
+ { value: "anthropic/claude-sonnet-4-5", label: "Claude Sonnet 4.5" },
120
+ { value: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5" },
121
+ ],
122
+ },
123
+ };
124
+ /**
125
+ * Build the Tailscale hostname for an agent.
126
+ * Includes the stack name to avoid conflicts across deployments.
127
+ * Example: "dev-agent-pm", "prod-agent-eng"
128
+ */
129
+ function tailscaleHostname(stackName, agentName) {
130
+ return `${stackName}-${agentName}`;
131
+ }
132
+ /** Key instructions for onboarding prompts */
133
+ exports.KEY_INSTRUCTIONS = {
134
+ anthropicApiKey: {
135
+ title: "Anthropic API Key",
136
+ steps: [
137
+ "To get your Anthropic API key:",
138
+ "1. Go to https://console.anthropic.com/account/keys",
139
+ "2. Click \"Create Key\"",
140
+ "3. Copy the key (starts with sk-ant-)",
141
+ ],
142
+ },
143
+ tailscaleAuthKey: {
144
+ title: "Tailscale Auth Key",
145
+ steps: [
146
+ "To get your Tailscale auth key:",
147
+ "1. Go to https://login.tailscale.com/admin/settings/keys",
148
+ "2. Click \"Generate auth key\"",
149
+ "3. Enable \"Reusable\" AND \"Ephemeral\" — ephemeral nodes auto-remove when offline",
150
+ "4. Copy the key (starts with tskey-auth-)",
151
+ ],
152
+ },
153
+ tailscaleApiKey: {
154
+ title: "Tailscale API Key (optional)",
155
+ steps: [
156
+ "For reliable cleanup of Tailscale devices during destroy:",
157
+ "1. Go to https://login.tailscale.com/admin/settings/keys",
158
+ "2. Under \"API access tokens\", click \"Generate access token\"",
159
+ "3. Copy the key (starts with tskey-api-)",
160
+ "4. This is optional but recommended for clean teardowns",
161
+ ],
162
+ },
163
+ tailnetDnsName: {
164
+ title: "Tailnet DNS Name",
165
+ steps: [
166
+ "To find your Tailnet DNS name:",
167
+ "1. Go to https://login.tailscale.com/admin/dns",
168
+ "2. Look for your tailnet name at the top",
169
+ "3. It looks like \"tailXXXXX.ts.net\" or a custom domain",
170
+ ],
171
+ },
172
+ slackCredentials: {
173
+ title: "Slack App Setup",
174
+ steps: [
175
+ "Create a Slack app for each agent using the manifest shown below:",
176
+ "1. Go to https://api.slack.com/apps → \"Create New App\" → \"From a manifest\"",
177
+ "2. Select your workspace, paste the JSON manifest, and create the app",
178
+ "3. Go to \"OAuth & Permissions\" — copy the Bot Token (xoxb-...)",
179
+ "4. Under \"Basic Information\" → \"App-Level Tokens\", generate a token",
180
+ " with the connections:write scope — copy it (xapp-...)",
181
+ ],
182
+ },
183
+ linearApiKey: {
184
+ title: "Linear API Key",
185
+ steps: [
186
+ "Create a separate Linear account for each agent (used by openclaw-linear plugin):",
187
+ "1. Invite you+agentname@domain.com to your Linear workspace",
188
+ " (plus-addressing forwards to your inbox — no new email needed)",
189
+ " Follow the link in the invite email to create the account and join the org",
190
+ "2. Go to Settings → Security & Access → Personal API keys → \"New API key\"",
191
+ "3. Copy the key (starts with lin_api_)",
192
+ ],
193
+ },
194
+ githubToken: {
195
+ title: "GitHub Token",
196
+ steps: [
197
+ "To get a GitHub personal access token for gh CLI:",
198
+ "1. Go to https://github.com/settings/tokens?type=beta",
199
+ "2. Click \"Generate new token\" → Fine-grained token",
200
+ "3. Select repositories, set expiration, and permissions (e.g., repo, read:org)",
201
+ "4. Copy the token (starts with github_pat_ or ghp_)",
202
+ ],
203
+ },
204
+ braveApiKey: {
205
+ title: "Brave Search API Key",
206
+ steps: [
207
+ "To get a Brave Search API key for web search:",
208
+ "1. Go to https://brave.com/search/api/",
209
+ "2. Sign up or log in to get an API key",
210
+ "3. Copy the key (starts with BSA)",
211
+ ],
212
+ },
213
+ hcloudToken: {
214
+ title: "Hetzner Cloud API Token",
215
+ steps: [
216
+ "To get your Hetzner Cloud API token:",
217
+ "1. Go to https://console.hetzner.cloud/",
218
+ "2. Select your project (or create one)",
219
+ "3. Go to Security → API Tokens",
220
+ "4. Click \"Generate API Token\" with Read & Write permissions",
221
+ "5. Copy the token",
222
+ ],
223
+ },
224
+ };
225
+ /** Generate a Slack app manifest JSON for a given agent */
226
+ function slackAppManifest(agentName) {
227
+ return JSON.stringify({
228
+ display_information: {
229
+ name: agentName,
230
+ description: "Slack connector for OpenClaw",
231
+ },
232
+ features: {
233
+ bot_user: {
234
+ display_name: agentName,
235
+ always_online: false,
236
+ },
237
+ app_home: {
238
+ messages_tab_enabled: true,
239
+ messages_tab_read_only_enabled: false,
240
+ },
241
+ slash_commands: [
242
+ {
243
+ command: "/openclaw",
244
+ description: "Send a message to OpenClaw",
245
+ should_escape: false,
246
+ },
247
+ ],
248
+ },
249
+ oauth_config: {
250
+ scopes: {
251
+ bot: [
252
+ "chat:write",
253
+ "chat:write.customize",
254
+ "channels:history",
255
+ "channels:read",
256
+ "groups:history",
257
+ "groups:read",
258
+ "groups:write",
259
+ "im:history",
260
+ "im:read",
261
+ "im:write",
262
+ "mpim:history",
263
+ "mpim:read",
264
+ "mpim:write",
265
+ "users:read",
266
+ "app_mentions:read",
267
+ "reactions:read",
268
+ "reactions:write",
269
+ "pins:read",
270
+ "pins:write",
271
+ "emoji:read",
272
+ "commands",
273
+ "files:read",
274
+ "files:write",
275
+ ],
276
+ user: [
277
+ "channels:history",
278
+ "channels:read",
279
+ "groups:history",
280
+ "groups:read",
281
+ "im:history",
282
+ "im:read",
283
+ "mpim:history",
284
+ "mpim:read",
285
+ "users:read",
286
+ "reactions:read",
287
+ "pins:read",
288
+ "emoji:read",
289
+ "search:read",
290
+ ],
291
+ },
292
+ },
293
+ settings: {
294
+ socket_mode_enabled: true,
295
+ event_subscriptions: {
296
+ bot_events: [
297
+ "app_mention",
298
+ "message.channels",
299
+ "message.groups",
300
+ "message.im",
301
+ "message.mpim",
302
+ "reaction_added",
303
+ "reaction_removed",
304
+ "member_joined_channel",
305
+ "member_left_channel",
306
+ "channel_rename",
307
+ "pin_added",
308
+ "pin_removed",
309
+ ],
310
+ },
311
+ },
312
+ }, null, 2);
313
+ }
314
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Dep registry — defines how each agent dependency is installed and what secrets it needs.
3
+ *
4
+ * Similar to PLUGIN_REGISTRY but for system-level tools (gh, brave-search, etc.)
5
+ * that agents need but that aren't OpenClaw plugins.
6
+ */
7
+ export interface DepSecret {
8
+ /** Environment variable name (e.g., "GITHUB_TOKEN") */
9
+ envVar: string;
10
+ /** Whether the secret is per-agent or shared globally */
11
+ scope: "agent" | "global";
12
+ }
13
+ export interface DepRegistryEntry {
14
+ /** Human-readable name for display */
15
+ displayName: string;
16
+ /** Bash script to install the dep (runs as root in cloud-init). Empty string = no install needed. */
17
+ installScript: string;
18
+ /** Bash script to run after install for auth/config (runs as ubuntu user).
19
+ * Can reference ${ENV_VAR} placeholders. Empty string = no post-install. */
20
+ postInstallScript: string;
21
+ /** Secret env vars this dep needs. Key = config key suffix, value = env var details. */
22
+ secrets: Record<string, DepSecret>;
23
+ }
24
+ export declare const DEP_REGISTRY: Record<string, DepRegistryEntry>;
25
+ //# sourceMappingURL=dep-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dep-registry.d.ts","sourceRoot":"","sources":["../src/dep-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,aAAa,EAAE,MAAM,CAAC;IACtB;iFAC6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAmCzD,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Dep registry — defines how each agent dependency is installed and what secrets it needs.
4
+ *
5
+ * Similar to PLUGIN_REGISTRY but for system-level tools (gh, brave-search, etc.)
6
+ * that agents need but that aren't OpenClaw plugins.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DEP_REGISTRY = void 0;
10
+ exports.DEP_REGISTRY = {
11
+ gh: {
12
+ displayName: "GitHub CLI",
13
+ installScript: `
14
+ # Install GitHub CLI
15
+ echo "Installing GitHub CLI..."
16
+ type -p curl >/dev/null || apt-get install -y curl
17
+ curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
18
+ chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
19
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null
20
+ apt-get update
21
+ apt-get install -y gh
22
+ echo "GitHub CLI installed: $(gh --version | head -n1)"
23
+ `,
24
+ postInstallScript: `
25
+ if echo "\${GITHUB_TOKEN}" | gh auth login --with-token 2>&1; then
26
+ gh auth setup-git
27
+ echo "GitHub CLI authenticated successfully"
28
+ else
29
+ echo "WARNING: GitHub CLI authentication failed"
30
+ echo " You can authenticate manually later with: gh auth login"
31
+ fi
32
+ `,
33
+ secrets: {
34
+ GithubToken: { envVar: "GITHUB_TOKEN", scope: "agent" },
35
+ },
36
+ },
37
+ "brave-search": {
38
+ displayName: "Brave Search",
39
+ installScript: "", // config-only, no binary to install
40
+ postInstallScript: "", // config patching stays in config-generator.ts
41
+ secrets: {
42
+ BraveApiKey: { envVar: "BRAVE_API_KEY", scope: "global" },
43
+ },
44
+ },
45
+ };
46
+ //# sourceMappingURL=dep-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dep-registry.js","sourceRoot":"","sources":["../src/dep-registry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqBU,QAAA,YAAY,GAAqC;IAC5D,EAAE,EAAE;QACF,WAAW,EAAE,YAAY;QACzB,aAAa,EAAE;;;;;;;;;;CAUlB;QACG,iBAAiB,EAAE;;;;;;;;CAQtB;QACG,OAAO,EAAE;YACP,WAAW,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;SACxD;KACF;IACD,cAAc,EAAE;QACd,WAAW,EAAE,cAAc;QAC3B,aAAa,EAAE,EAAE,EAAO,oCAAoC;QAC5D,iBAAiB,EAAE,EAAE,EAAG,+CAA+C;QACvE,OAAO,EAAE;YACP,WAAW,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;SAC1D;KACF;CACF,CAAC"}