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,151 @@
1
+ "use strict";
2
+ /**
3
+ * Background update notifier — checks npm for newer versions
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.checkForUpdates = checkForUpdates;
43
+ const https = __importStar(require("https"));
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const os = __importStar(require("os"));
47
+ const picocolors_1 = __importDefault(require("picocolors"));
48
+ const PACKAGE_NAME = "clawup";
49
+ const CACHE_FILE = ".update-check.json";
50
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
51
+ const FETCH_TIMEOUT_MS = 3000;
52
+ function getCacheDir() {
53
+ // Previously ~/.agent-army — users upgrading from the old name will start a fresh cache
54
+ return path.join(os.homedir(), ".clawup");
55
+ }
56
+ function getCachePath() {
57
+ return path.join(getCacheDir(), CACHE_FILE);
58
+ }
59
+ function loadCache() {
60
+ try {
61
+ const raw = fs.readFileSync(getCachePath(), "utf-8");
62
+ return JSON.parse(raw);
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ function saveCache(cache) {
69
+ const dir = getCacheDir();
70
+ if (!fs.existsSync(dir)) {
71
+ fs.mkdirSync(dir, { recursive: true });
72
+ }
73
+ fs.writeFileSync(getCachePath(), JSON.stringify(cache), "utf-8");
74
+ }
75
+ /**
76
+ * Compare two semver strings. Returns:
77
+ * 1 if a > b, -1 if a < b, 0 if equal
78
+ */
79
+ function compareSemver(a, b) {
80
+ const pa = a.split(".").map(Number);
81
+ const pb = b.split(".").map(Number);
82
+ for (let i = 0; i < 3; i++) {
83
+ const na = pa[i] ?? 0;
84
+ const nb = pb[i] ?? 0;
85
+ if (na > nb)
86
+ return 1;
87
+ if (na < nb)
88
+ return -1;
89
+ }
90
+ return 0;
91
+ }
92
+ function fetchLatestVersion() {
93
+ return new Promise((resolve) => {
94
+ const req = https.get(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, { timeout: FETCH_TIMEOUT_MS }, (res) => {
95
+ let data = "";
96
+ res.on("data", (chunk) => (data += chunk));
97
+ res.on("end", () => {
98
+ try {
99
+ const json = JSON.parse(data);
100
+ resolve(json.version ?? null);
101
+ }
102
+ catch {
103
+ resolve(null);
104
+ }
105
+ });
106
+ });
107
+ req.on("timeout", () => {
108
+ req.destroy();
109
+ resolve(null);
110
+ });
111
+ req.on("error", () => resolve(null));
112
+ });
113
+ }
114
+ /**
115
+ * Check for updates and print a notice if a newer version is available.
116
+ * Non-blocking — errors are silently ignored.
117
+ */
118
+ async function checkForUpdates(currentVersion) {
119
+ try {
120
+ const cache = loadCache();
121
+ const now = Date.now();
122
+ // Use cached version if fresh enough
123
+ if (cache && now - cache.lastChecked < CHECK_INTERVAL_MS) {
124
+ if (compareSemver(cache.latestVersion, currentVersion) > 0) {
125
+ printUpdateNotice(currentVersion, cache.latestVersion);
126
+ }
127
+ return;
128
+ }
129
+ // Fetch in background — don't block CLI exit
130
+ const latest = await fetchLatestVersion();
131
+ if (!latest) {
132
+ // Cache the current version so we don't retry on every CLI run
133
+ saveCache({ lastChecked: now, latestVersion: currentVersion });
134
+ return;
135
+ }
136
+ saveCache({ lastChecked: now, latestVersion: latest });
137
+ if (compareSemver(latest, currentVersion) > 0) {
138
+ printUpdateNotice(currentVersion, latest);
139
+ }
140
+ }
141
+ catch {
142
+ // Never fail the CLI over an update check
143
+ }
144
+ }
145
+ function printUpdateNotice(current, latest) {
146
+ console.log();
147
+ console.log(` Update available: ${picocolors_1.default.dim(current)} ${picocolors_1.default.dim("→")} ${picocolors_1.default.green(latest)}`);
148
+ console.log(` Run ${picocolors_1.default.cyan("clawup update")} to install`);
149
+ console.log();
150
+ }
151
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../lib/update-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Vendor binary management
3
+ *
4
+ * Resolves vendored CLI binaries (Pulumi, AWS CLI) installed to cli/vendor/
5
+ * by the postinstall script. Falls back to system PATH if not found.
6
+ */
7
+ /**
8
+ * Get the vendor directory path.
9
+ * At runtime this resolves from cli/dist/lib/vendor.js → ../../vendor/
10
+ */
11
+ export declare function getVendorDir(): string;
12
+ /**
13
+ * Resolve a command to its vendored binary path if available.
14
+ * Returns the full path to the vendored binary, or null if not found.
15
+ */
16
+ export declare function resolveVendoredBinary(command: string): string | null;
17
+ /**
18
+ * Resolve a command, checking vendor directory first, then system PATH.
19
+ * Returns the resolved command string (full path for vendor, original for system).
20
+ */
21
+ export declare function resolveCommand(command: string): string;
22
+ /**
23
+ * Check if a vendored binary exists for the given command.
24
+ */
25
+ export declare function isVendored(command: string): boolean;
26
+ /**
27
+ * Check if a command exists, checking vendor directory first, then system PATH.
28
+ */
29
+ export declare function commandExistsWithVendor(command: string): boolean;
30
+ /**
31
+ * Get the vendor PATH prefix for adding to child process environment.
32
+ * This allows vendored binaries to be found by child processes.
33
+ */
34
+ export declare function getVendorPATH(): string;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ /**
3
+ * Vendor binary management
4
+ *
5
+ * Resolves vendored CLI binaries (Pulumi, AWS CLI) installed to cli/vendor/
6
+ * by the postinstall script. Falls back to system PATH if not found.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.getVendorDir = getVendorDir;
43
+ exports.resolveVendoredBinary = resolveVendoredBinary;
44
+ exports.resolveCommand = resolveCommand;
45
+ exports.isVendored = isVendored;
46
+ exports.commandExistsWithVendor = commandExistsWithVendor;
47
+ exports.getVendorPATH = getVendorPATH;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const child_process_1 = require("child_process");
51
+ /**
52
+ * Get the vendor directory path.
53
+ * At runtime this resolves from cli/dist/lib/vendor.js → ../../vendor/
54
+ */
55
+ function getVendorDir() {
56
+ return path.join(__dirname, "..", "..", "vendor");
57
+ }
58
+ /**
59
+ * Get the vendor bin directory for the current platform.
60
+ * Structure: vendor/pulumi/, vendor/aws-cli/
61
+ */
62
+ function getVendorBinDir(tool) {
63
+ return path.join(getVendorDir(), tool);
64
+ }
65
+ /**
66
+ * Map of commands to their vendor subdirectory and binary name.
67
+ */
68
+ const VENDOR_COMMANDS = {
69
+ pulumi: { dir: "pulumi", bin: process.platform === "win32" ? "pulumi.exe" : "pulumi" },
70
+ aws: { dir: "aws-cli", bin: process.platform === "win32" ? "aws.exe" : "aws" },
71
+ };
72
+ /**
73
+ * Resolve a command to its vendored binary path if available.
74
+ * Returns the full path to the vendored binary, or null if not found.
75
+ */
76
+ function resolveVendoredBinary(command) {
77
+ const entry = VENDOR_COMMANDS[command];
78
+ if (!entry)
79
+ return null;
80
+ const binPath = path.join(getVendorBinDir(entry.dir), entry.bin);
81
+ if (fs.existsSync(binPath)) {
82
+ return binPath;
83
+ }
84
+ return null;
85
+ }
86
+ /**
87
+ * Resolve a command, checking vendor directory first, then system PATH.
88
+ * Returns the resolved command string (full path for vendor, original for system).
89
+ */
90
+ function resolveCommand(command) {
91
+ const vendored = resolveVendoredBinary(command);
92
+ if (vendored)
93
+ return vendored;
94
+ return command;
95
+ }
96
+ /**
97
+ * Check if a vendored binary exists for the given command.
98
+ */
99
+ function isVendored(command) {
100
+ return resolveVendoredBinary(command) !== null;
101
+ }
102
+ /**
103
+ * Check if a command exists, checking vendor directory first, then system PATH.
104
+ */
105
+ function commandExistsWithVendor(command) {
106
+ // Check vendor first
107
+ if (isVendored(command))
108
+ return true;
109
+ // Fall back to system PATH
110
+ const bin = process.platform === "win32" ? "where" : "which";
111
+ const result = (0, child_process_1.spawnSync)(bin, [command], { shell: false, stdio: "ignore" });
112
+ return result.status === 0;
113
+ }
114
+ /**
115
+ * Get the vendor PATH prefix for adding to child process environment.
116
+ * This allows vendored binaries to be found by child processes.
117
+ */
118
+ function getVendorPATH() {
119
+ const dirs = [];
120
+ for (const entry of Object.values(VENDOR_COMMANDS)) {
121
+ const dir = getVendorBinDir(entry.dir);
122
+ if (fs.existsSync(dir)) {
123
+ dirs.push(dir);
124
+ }
125
+ }
126
+ return dirs.join(path.delimiter);
127
+ }
128
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../lib/vendor.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUH,oCAEC;AAsBD,sDAUC;AAMD,wCAIC;AAKD,gCAEC;AAKD,0DAQC;AAMD,sCASC;AAvFD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAA0C;AAE1C;;;GAGG;AACH,SAAgB,YAAY;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,eAAe,GAAiD;IACpE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtF,GAAG,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE;CAC/E,CAAC;AAEF;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,OAAO,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,qBAAqB;IACrB,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,2BAA2B;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa;IAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Workspace management for installed CLI mode.
3
+ *
4
+ * Dev mode: repo root has Pulumi.yaml + node_modules/@pulumi → use repo directly
5
+ * Installed: bundle infra to ~/.clawup/workspace/, npm-install Pulumi SDK there
6
+ */
7
+ import type { VoidResult } from "@clawup/core";
8
+ /**
9
+ * Returns true when running from the development repo (not from an npm install).
10
+ * Detected by the presence of Pulumi.yaml AND node_modules/@pulumi at the repo root.
11
+ */
12
+ export declare function isDevMode(): boolean;
13
+ /**
14
+ * Returns the workspace directory for installed mode, or undefined in dev mode.
15
+ */
16
+ export declare function getWorkspaceDir(): string | undefined;
17
+ /**
18
+ * Ensure the workspace is set up (copy bundled infra, install deps).
19
+ * No-op in dev mode.
20
+ */
21
+ export declare function ensureWorkspace(): VoidResult;
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * Workspace management for installed CLI mode.
4
+ *
5
+ * Dev mode: repo root has Pulumi.yaml + node_modules/@pulumi → use repo directly
6
+ * Installed: bundle infra to ~/.clawup/workspace/, npm-install Pulumi SDK there
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.isDevMode = isDevMode;
43
+ exports.getWorkspaceDir = getWorkspaceDir;
44
+ exports.ensureWorkspace = ensureWorkspace;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const os = __importStar(require("os"));
48
+ const child_process_1 = require("child_process");
49
+ const WORKSPACE_DIR = path.join(os.homedir(), ".clawup", "workspace");
50
+ const VERSION_FILE = ".cli-version";
51
+ /**
52
+ * Read the CLI package version from cli/package.json at build time.
53
+ * At runtime this resolves to cli/dist/lib/workspace.js → ../../package.json.
54
+ */
55
+ function cliVersion() {
56
+ const pkgPath = path.join(__dirname, "..", "..", "package.json");
57
+ try {
58
+ return JSON.parse(fs.readFileSync(pkgPath, "utf-8")).version;
59
+ }
60
+ catch {
61
+ return "unknown";
62
+ }
63
+ }
64
+ /**
65
+ * Resolve the bundled infra directory shipped inside the npm package.
66
+ * From cli/dist/lib/ → ../../infra/
67
+ */
68
+ function getBundledInfraDir() {
69
+ return path.join(__dirname, "..", "..", "infra");
70
+ }
71
+ /**
72
+ * Returns true when running from the development repo (not from an npm install).
73
+ * Detected by the presence of Pulumi.yaml AND node_modules/@pulumi at the repo root.
74
+ */
75
+ function isDevMode() {
76
+ // cli/dist/lib/ → 3 levels up → repo root
77
+ const repoRoot = path.resolve(__dirname, "..", "..", "..");
78
+ return (fs.existsSync(path.join(repoRoot, "Pulumi.yaml")) &&
79
+ fs.existsSync(path.join(repoRoot, "node_modules", "@pulumi")));
80
+ }
81
+ /**
82
+ * Returns the workspace directory for installed mode, or undefined in dev mode.
83
+ */
84
+ function getWorkspaceDir() {
85
+ if (isDevMode())
86
+ return undefined;
87
+ return WORKSPACE_DIR;
88
+ }
89
+ /**
90
+ * Ensure the workspace is set up (copy bundled infra, install deps).
91
+ * No-op in dev mode.
92
+ */
93
+ function ensureWorkspace() {
94
+ if (isDevMode())
95
+ return { ok: true };
96
+ const bundled = getBundledInfraDir();
97
+ if (!fs.existsSync(bundled)) {
98
+ return {
99
+ ok: false,
100
+ error: `Bundled infrastructure not found at ${bundled}. The CLI package may be corrupt — try reinstalling.`,
101
+ };
102
+ }
103
+ const version = cliVersion();
104
+ const versionFile = path.join(WORKSPACE_DIR, VERSION_FILE);
105
+ const currentVersion = fs.existsSync(versionFile)
106
+ ? fs.readFileSync(versionFile, "utf-8").trim()
107
+ : null;
108
+ if (currentVersion === version) {
109
+ // Already up-to-date
110
+ return { ok: true };
111
+ }
112
+ // Create workspace directory
113
+ fs.mkdirSync(WORKSPACE_DIR, { recursive: true });
114
+ // Preserve user state files across re-sync
115
+ const preservePatterns = ["Pulumi.*.yaml", "clawup.yaml"];
116
+ const preserved = new Map();
117
+ for (const pattern of preservePatterns) {
118
+ // Simple glob: Pulumi.*.yaml
119
+ const files = fs.readdirSync(WORKSPACE_DIR).filter((f) => {
120
+ if (pattern === "clawup.yaml")
121
+ return f === "clawup.yaml";
122
+ // Match Pulumi.<stack>.yaml but not Pulumi.yaml itself
123
+ return f.startsWith("Pulumi.") && f.endsWith(".yaml") && f !== "Pulumi.yaml";
124
+ });
125
+ for (const f of files) {
126
+ preserved.set(f, fs.readFileSync(path.join(WORKSPACE_DIR, f)));
127
+ }
128
+ }
129
+ // Sync bundled infra → workspace (overwrite everything except preserved files)
130
+ copyDirSync(bundled, WORKSPACE_DIR);
131
+ // Restore preserved files
132
+ for (const [name, content] of preserved) {
133
+ fs.writeFileSync(path.join(WORKSPACE_DIR, name), content);
134
+ }
135
+ // Install Pulumi SDK deps
136
+ try {
137
+ (0, child_process_1.execSync)("npm install --production", {
138
+ cwd: WORKSPACE_DIR,
139
+ stdio: "pipe",
140
+ timeout: 300_000, // 5 minutes
141
+ });
142
+ }
143
+ catch (err) {
144
+ const msg = err instanceof Error ? err.message : String(err);
145
+ return {
146
+ ok: false,
147
+ error: `Failed to install Pulumi SDK dependencies in workspace:\n${msg}`,
148
+ };
149
+ }
150
+ // Write version marker only after successful install
151
+ fs.writeFileSync(versionFile, version, "utf-8");
152
+ return { ok: true };
153
+ }
154
+ /**
155
+ * Recursively copy a directory, overwriting existing files.
156
+ */
157
+ function copyDirSync(src, dest) {
158
+ fs.mkdirSync(dest, { recursive: true });
159
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
160
+ const srcPath = path.join(src, entry.name);
161
+ const destPath = path.join(dest, entry.name);
162
+ if (entry.isDirectory()) {
163
+ copyDirSync(srcPath, destPath);
164
+ }
165
+ else {
166
+ fs.copyFileSync(srcPath, destPath);
167
+ }
168
+ }
169
+ }
170
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../lib/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Deploy Tool — Deploy agents with pulumi up
3
+ *
4
+ * Platform-agnostic implementation using RuntimeAdapter.
5
+ */
6
+ import type { ToolImplementation } from "../adapters";
7
+ export interface DeployOptions {
8
+ /** Skip confirmation prompt */
9
+ yes?: boolean;
10
+ /** Config name (auto-detected if only one) */
11
+ config?: string;
12
+ }
13
+ /**
14
+ * Deploy tool implementation
15
+ */
16
+ export declare const deployTool: ToolImplementation<DeployOptions>;