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,159 @@
1
+ /**
2
+ * Zod schemas for the clawup.yaml manifest and agent definitions.
3
+ * These are the source of truth — TypeScript types are derived via z.infer<>.
4
+ */
5
+ import { z } from "zod";
6
+ /** Schema for a single agent in the manifest */
7
+ export declare const AgentDefinitionSchema: z.ZodObject<{
8
+ /** Resource name (e.g., "agent-pm") */
9
+ name: z.ZodString;
10
+ /** Display name (e.g., "Juno") */
11
+ displayName: z.ZodString;
12
+ /** Role identifier (e.g., "pm", "eng", "tester") */
13
+ role: z.ZodString;
14
+ /**
15
+ * Git URL or local path to an identity repo/folder.
16
+ * Supports `repo#subfolder` syntax for mono-repos.
17
+ */
18
+ identity: z.ZodString;
19
+ /** Pin the identity to a specific Git tag or commit hash */
20
+ identityVersion: z.ZodOptional<z.ZodString>;
21
+ /** EBS volume size in GB */
22
+ volumeSize: z.ZodNumber;
23
+ /** Override instance type for this agent */
24
+ instanceType: z.ZodOptional<z.ZodString>;
25
+ /** Additional environment variables */
26
+ envVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
27
+ /** Inline plugin config (non-secret values only) */
28
+ plugins: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ name: string;
31
+ displayName: string;
32
+ role: string;
33
+ identity: string;
34
+ volumeSize: number;
35
+ plugins?: Record<string, Record<string, unknown>> | undefined;
36
+ identityVersion?: string | undefined;
37
+ instanceType?: string | undefined;
38
+ envVars?: Record<string, string> | undefined;
39
+ }, {
40
+ name: string;
41
+ displayName: string;
42
+ role: string;
43
+ identity: string;
44
+ volumeSize: number;
45
+ plugins?: Record<string, Record<string, unknown>> | undefined;
46
+ identityVersion?: string | undefined;
47
+ instanceType?: string | undefined;
48
+ envVars?: Record<string, string> | undefined;
49
+ }>;
50
+ /** Schema for per-plugin configuration file */
51
+ export declare const PluginConfigFileSchema: z.ZodObject<{
52
+ agents: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ agents: Record<string, Record<string, unknown>>;
55
+ }, {
56
+ agents: Record<string, Record<string, unknown>>;
57
+ }>;
58
+ /** Schema for the clawup.yaml manifest */
59
+ export declare const ClawupManifestSchema: z.ZodObject<{
60
+ stackName: z.ZodString;
61
+ provider: z.ZodEnum<["aws", "hetzner"]>;
62
+ region: z.ZodString;
63
+ instanceType: z.ZodString;
64
+ ownerName: z.ZodString;
65
+ /** Owner timezone (e.g., "America/New_York") */
66
+ timezone: z.ZodOptional<z.ZodString>;
67
+ /** Owner working hours (e.g., "9am-6pm") */
68
+ workingHours: z.ZodOptional<z.ZodString>;
69
+ /** Additional notes about the owner for agents */
70
+ userNotes: z.ZodOptional<z.ZodString>;
71
+ /** Generic template variables (e.g., LINEAR_TEAM, GITHUB_REPO) */
72
+ templateVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
73
+ agents: z.ZodArray<z.ZodObject<{
74
+ /** Resource name (e.g., "agent-pm") */
75
+ name: z.ZodString;
76
+ /** Display name (e.g., "Juno") */
77
+ displayName: z.ZodString;
78
+ /** Role identifier (e.g., "pm", "eng", "tester") */
79
+ role: z.ZodString;
80
+ /**
81
+ * Git URL or local path to an identity repo/folder.
82
+ * Supports `repo#subfolder` syntax for mono-repos.
83
+ */
84
+ identity: z.ZodString;
85
+ /** Pin the identity to a specific Git tag or commit hash */
86
+ identityVersion: z.ZodOptional<z.ZodString>;
87
+ /** EBS volume size in GB */
88
+ volumeSize: z.ZodNumber;
89
+ /** Override instance type for this agent */
90
+ instanceType: z.ZodOptional<z.ZodString>;
91
+ /** Additional environment variables */
92
+ envVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
93
+ /** Inline plugin config (non-secret values only) */
94
+ plugins: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
95
+ }, "strip", z.ZodTypeAny, {
96
+ name: string;
97
+ displayName: string;
98
+ role: string;
99
+ identity: string;
100
+ volumeSize: number;
101
+ plugins?: Record<string, Record<string, unknown>> | undefined;
102
+ identityVersion?: string | undefined;
103
+ instanceType?: string | undefined;
104
+ envVars?: Record<string, string> | undefined;
105
+ }, {
106
+ name: string;
107
+ displayName: string;
108
+ role: string;
109
+ identity: string;
110
+ volumeSize: number;
111
+ plugins?: Record<string, Record<string, unknown>> | undefined;
112
+ identityVersion?: string | undefined;
113
+ instanceType?: string | undefined;
114
+ envVars?: Record<string, string> | undefined;
115
+ }>, "many">;
116
+ }, "strip", z.ZodTypeAny, {
117
+ instanceType: string;
118
+ agents: {
119
+ name: string;
120
+ displayName: string;
121
+ role: string;
122
+ identity: string;
123
+ volumeSize: number;
124
+ plugins?: Record<string, Record<string, unknown>> | undefined;
125
+ identityVersion?: string | undefined;
126
+ instanceType?: string | undefined;
127
+ envVars?: Record<string, string> | undefined;
128
+ }[];
129
+ stackName: string;
130
+ provider: "aws" | "hetzner";
131
+ region: string;
132
+ ownerName: string;
133
+ timezone?: string | undefined;
134
+ workingHours?: string | undefined;
135
+ userNotes?: string | undefined;
136
+ templateVars?: Record<string, string> | undefined;
137
+ }, {
138
+ instanceType: string;
139
+ agents: {
140
+ name: string;
141
+ displayName: string;
142
+ role: string;
143
+ identity: string;
144
+ volumeSize: number;
145
+ plugins?: Record<string, Record<string, unknown>> | undefined;
146
+ identityVersion?: string | undefined;
147
+ instanceType?: string | undefined;
148
+ envVars?: Record<string, string> | undefined;
149
+ }[];
150
+ stackName: string;
151
+ provider: "aws" | "hetzner";
152
+ region: string;
153
+ ownerName: string;
154
+ timezone?: string | undefined;
155
+ workingHours?: string | undefined;
156
+ userNotes?: string | undefined;
157
+ templateVars?: Record<string, string> | undefined;
158
+ }>;
159
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/schemas/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gDAAgD;AAChD,eAAO,MAAM,qBAAqB;IAChC,uCAAuC;;IAEvC,kCAAkC;;IAElC,oDAAoD;;IAEpD;;;OAGG;;IAEH,4DAA4D;;IAE5D,4BAA4B;;IAE5B,4CAA4C;;IAE5C,uCAAuC;;IAEvC,oDAAoD;;;;;;;;;;;;;;;;;;;;;;EAEpD,CAAC;AAEH,+CAA+C;AAC/C,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB;;;;;;IAM/B,gDAAgD;;IAEhD,4CAA4C;;IAE5C,kDAAkD;;IAElD,kEAAkE;;;QAzClE,uCAAuC;;QAEvC,kCAAkC;;QAElC,oDAAoD;;QAEpD;;;WAGG;;QAEH,4DAA4D;;QAE5D,4BAA4B;;QAE5B,4CAA4C;;QAE5C,uCAAuC;;QAEvC,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpD,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * Zod schemas for the clawup.yaml manifest and agent definitions.
4
+ * These are the source of truth — TypeScript types are derived via z.infer<>.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ClawupManifestSchema = exports.PluginConfigFileSchema = exports.AgentDefinitionSchema = void 0;
8
+ const zod_1 = require("zod");
9
+ /** Schema for a single agent in the manifest */
10
+ exports.AgentDefinitionSchema = zod_1.z.object({
11
+ /** Resource name (e.g., "agent-pm") */
12
+ name: zod_1.z.string().min(1, "Agent name is required"),
13
+ /** Display name (e.g., "Juno") */
14
+ displayName: zod_1.z.string().min(1, "Agent displayName is required"),
15
+ /** Role identifier (e.g., "pm", "eng", "tester") */
16
+ role: zod_1.z.string().min(1, "Agent role is required"),
17
+ /**
18
+ * Git URL or local path to an identity repo/folder.
19
+ * Supports `repo#subfolder` syntax for mono-repos.
20
+ */
21
+ identity: zod_1.z.string().min(1, "Agent identity is required"),
22
+ /** Pin the identity to a specific Git tag or commit hash */
23
+ identityVersion: zod_1.z.string().optional(),
24
+ /** EBS volume size in GB */
25
+ volumeSize: zod_1.z.number().positive("volumeSize must be a positive number"),
26
+ /** Override instance type for this agent */
27
+ instanceType: zod_1.z.string().optional(),
28
+ /** Additional environment variables */
29
+ envVars: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
30
+ /** Inline plugin config (non-secret values only) */
31
+ plugins: zod_1.z.record(zod_1.z.string(), zod_1.z.record(zod_1.z.string(), zod_1.z.unknown())).optional(),
32
+ });
33
+ /** Schema for per-plugin configuration file */
34
+ exports.PluginConfigFileSchema = zod_1.z.object({
35
+ agents: zod_1.z.record(zod_1.z.string(), zod_1.z.record(zod_1.z.string(), zod_1.z.unknown())),
36
+ });
37
+ /** Schema for the clawup.yaml manifest */
38
+ exports.ClawupManifestSchema = zod_1.z.object({
39
+ stackName: zod_1.z.string().min(1, "stackName is required"),
40
+ provider: zod_1.z.enum(["aws", "hetzner"]),
41
+ region: zod_1.z.string().min(1, "region is required"),
42
+ instanceType: zod_1.z.string().min(1, "instanceType is required"),
43
+ ownerName: zod_1.z.string().min(1, "ownerName is required"),
44
+ /** Owner timezone (e.g., "America/New_York") */
45
+ timezone: zod_1.z.string().optional(),
46
+ /** Owner working hours (e.g., "9am-6pm") */
47
+ workingHours: zod_1.z.string().optional(),
48
+ /** Additional notes about the owner for agents */
49
+ userNotes: zod_1.z.string().optional(),
50
+ /** Generic template variables (e.g., LINEAR_TEAM, GITHUB_REPO) */
51
+ templateVars: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
52
+ agents: zod_1.z.array(exports.AgentDefinitionSchema).min(1, "At least one agent is required"),
53
+ });
54
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/schemas/manifest.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAAwB;AAExB,gDAAgD;AACnC,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,uCAAuC;IACvC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;IACjD,kCAAkC;IAClC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;IAC/D,oDAAoD;IACpD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;IACjD;;;OAGG;IACH,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC;IACzD,4DAA4D;IAC5D,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,4BAA4B;IAC5B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACvE,4CAA4C;IAC5C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,uCAAuC;IACvC,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,oDAAoD;IACpD,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5E,CAAC,CAAC;AAEH,+CAA+C;AAClC,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CAChE,CAAC,CAAC;AAEH,0CAA0C;AAC7B,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACrD,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC;IAC/C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC;IAC3D,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACrD,gDAAgD;IAChD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,4CAA4C;IAC5C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,kDAAkD;IAClD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,kEAAkE;IAClE,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;CAChF,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Skill parsing and classification utilities.
3
+ *
4
+ * Skills come in two types:
5
+ * - Private: bundled as files in the identity repo under `skills/`
6
+ * - Public: installed from clawhub via `clawhub install <slug>`
7
+ *
8
+ * Convention: public skills are prefixed with "clawhub:" in the skills array.
9
+ */
10
+ export declare const CLAWHUB_PREFIX = "clawhub:";
11
+ export interface ParsedSkill {
12
+ /** Original string from the skills array */
13
+ raw: string;
14
+ /** Slug used for installation or directory lookup */
15
+ slug: string;
16
+ /** Whether this skill is installed from clawhub (public) */
17
+ isPublic: boolean;
18
+ }
19
+ /**
20
+ * Parse a single skill string into its components.
21
+ */
22
+ export declare function parseSkill(skill: string): ParsedSkill;
23
+ /**
24
+ * Classify an array of skill strings into private and public buckets.
25
+ */
26
+ export declare function classifySkills(skills: string[]): {
27
+ private: ParsedSkill[];
28
+ public: ParsedSkill[];
29
+ };
30
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAarD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;IAChD,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAcA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * Skill parsing and classification utilities.
4
+ *
5
+ * Skills come in two types:
6
+ * - Private: bundled as files in the identity repo under `skills/`
7
+ * - Public: installed from clawhub via `clawhub install <slug>`
8
+ *
9
+ * Convention: public skills are prefixed with "clawhub:" in the skills array.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CLAWHUB_PREFIX = void 0;
13
+ exports.parseSkill = parseSkill;
14
+ exports.classifySkills = classifySkills;
15
+ exports.CLAWHUB_PREFIX = "clawhub:";
16
+ /**
17
+ * Parse a single skill string into its components.
18
+ */
19
+ function parseSkill(skill) {
20
+ if (skill.startsWith(exports.CLAWHUB_PREFIX)) {
21
+ return {
22
+ raw: skill,
23
+ slug: skill.slice(exports.CLAWHUB_PREFIX.length),
24
+ isPublic: true,
25
+ };
26
+ }
27
+ return {
28
+ raw: skill,
29
+ slug: skill,
30
+ isPublic: false,
31
+ };
32
+ }
33
+ /**
34
+ * Classify an array of skill strings into private and public buckets.
35
+ */
36
+ function classifySkills(skills) {
37
+ const result = {
38
+ private: [],
39
+ public: [],
40
+ };
41
+ for (const skill of skills) {
42
+ const parsed = parseSkill(skill);
43
+ if (parsed.isPublic) {
44
+ result.public.push(parsed);
45
+ }
46
+ else {
47
+ result.private.push(parsed);
48
+ }
49
+ }
50
+ return result;
51
+ }
52
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAgBH,gCAaC;AAKD,wCAiBC;AAjDY,QAAA,cAAc,GAAG,UAAU,CAAC;AAWzC;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,CAAC,UAAU,CAAC,sBAAc,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,sBAAc,CAAC,MAAM,CAAC;YACxC,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAgB;IAI7C,MAAM,MAAM,GAAsD;QAChE,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;KACX,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Shared type definitions for Clawup.
3
+ * Types are derived from Zod schemas — the schemas are the source of truth.
4
+ */
5
+ import type { z } from "zod";
6
+ import type { AgentDefinitionSchema, ClawupManifestSchema, PluginConfigFileSchema, IdentityManifestSchema } from "./schemas";
7
+ /** Definition of a single agent in the manifest */
8
+ export type AgentDefinition = z.infer<typeof AgentDefinitionSchema>;
9
+ /** Per-plugin configuration file stored at ~/.clawup/configs/<stack>/plugins/<plugin>.yaml */
10
+ export type PluginConfigFile = z.infer<typeof PluginConfigFileSchema>;
11
+ /** The clawup.yaml manifest */
12
+ export type ClawupManifest = z.infer<typeof ClawupManifestSchema>;
13
+ /** Manifest schema for an agent identity (identity.yaml) */
14
+ export type IdentityManifest = z.infer<typeof IdentityManifestSchema>;
15
+ /**
16
+ * Result returned by fetchIdentity().
17
+ * Contains the parsed manifest and all workspace/skill files from the identity directory.
18
+ */
19
+ export interface IdentityResult {
20
+ /** Parsed identity manifest (identity.yaml) */
21
+ manifest: IdentityManifest;
22
+ /** Files keyed by relative path (e.g., "SOUL.md", "skills/pm-queue-handler/SKILL.md") */
23
+ files: Record<string, string>;
24
+ }
25
+ /**
26
+ * Validate an AgentDefinition for consistency.
27
+ *
28
+ * @throws Error with descriptive message if validation fails
29
+ */
30
+ export declare function validateAgentDefinition(agent: AgentDefinition): void;
31
+ /** Result of a single prerequisite check */
32
+ export interface PrereqResult {
33
+ name: string;
34
+ ok: boolean;
35
+ message: string;
36
+ hint?: string;
37
+ }
38
+ /**
39
+ * Discriminated union for fallible operations that don't return a value.
40
+ * Use instead of `{ ok: boolean; error?: string }` for proper type narrowing.
41
+ */
42
+ export type VoidResult = {
43
+ ok: true;
44
+ } | {
45
+ ok: false;
46
+ error: string;
47
+ };
48
+ /**
49
+ * Discriminated union for fallible operations that return a value on success.
50
+ * After narrowing with `if (result.ok)`, `result.value` is typed as `T`.
51
+ */
52
+ export type Result<T> = {
53
+ ok: true;
54
+ value: T;
55
+ } | {
56
+ ok: false;
57
+ error: string;
58
+ };
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,WAAW,CAAC;AAEnB,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,8FAA8F;AAC9F,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,+BAA+B;AAC/B,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAoBpE;AAED,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Shared type definitions for Clawup.
4
+ * Types are derived from Zod schemas — the schemas are the source of truth.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.validateAgentDefinition = validateAgentDefinition;
8
+ /**
9
+ * Validate an AgentDefinition for consistency.
10
+ *
11
+ * @throws Error with descriptive message if validation fails
12
+ */
13
+ function validateAgentDefinition(agent) {
14
+ if (!agent.name) {
15
+ throw new Error(`Agent definition missing required field "name".`);
16
+ }
17
+ if (!agent.displayName) {
18
+ throw new Error(`Agent "${agent.name}" missing required field "displayName".`);
19
+ }
20
+ if (!agent.role) {
21
+ throw new Error(`Agent "${agent.name}" missing required field "role".`);
22
+ }
23
+ if (!agent.identity) {
24
+ throw new Error(`Agent "${agent.name}" missing required field "identity".`);
25
+ }
26
+ if (typeof agent.volumeSize !== "number" || agent.volumeSize <= 0) {
27
+ throw new Error(`Agent "${agent.name}": "volumeSize" must be a positive number.`);
28
+ }
29
+ }
30
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsCH,0DAoBC;AAzBD;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAsB;IAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,yCAAyC,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,kCAAkC,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,sCAAsC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,4CAA4C,CAAC,CAAC;IACpF,CAAC;AACH,CAAC"}
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@clawup/core",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "description": "Shared types, constants, and utilities for Clawup",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./constants": "./dist/constants.js",
11
+ "./types": "./dist/types.js",
12
+ "./identity": "./dist/identity.js",
13
+ "./skills": "./dist/skills.js",
14
+ "./deps": "./dist/deps.js",
15
+ "./dep-registry": "./dist/dep-registry.js",
16
+ "./plugin-registry": "./dist/plugin-registry.js",
17
+ "./coding-agent-registry": "./dist/coding-agent-registry.js",
18
+ "./schemas": "./dist/schemas/index.js"
19
+ },
20
+ "typesVersions": {
21
+ "*": {
22
+ "identity": ["dist/identity.d.ts"],
23
+ "constants": ["dist/constants.d.ts"],
24
+ "types": ["dist/types.d.ts"],
25
+ "skills": ["dist/skills.d.ts"],
26
+ "deps": ["dist/deps.d.ts"],
27
+ "dep-registry": ["dist/dep-registry.d.ts"],
28
+ "plugin-registry": ["dist/plugin-registry.d.ts"],
29
+ "coding-agent-registry": ["dist/coding-agent-registry.d.ts"],
30
+ "schemas": ["dist/schemas/index.d.ts"]
31
+ }
32
+ },
33
+ "scripts": {
34
+ "build": "tsc",
35
+ "watch": "tsc --watch"
36
+ },
37
+ "dependencies": {
38
+ "yaml": "^2.7.0",
39
+ "zod": "^3.24.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^20.0.0",
43
+ "typescript": "^5.0.0"
44
+ },
45
+ "license": "MIT"
46
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "clawup-infra",
3
+ "private": true,
4
+ "main": "dist/index.js",
5
+ "dependencies": {
6
+ "@pulumi/pulumi": "^3.0.0",
7
+ "@pulumi/aws": "^6.0.0",
8
+ "@pulumi/hcloud": "^1.32.0",
9
+ "@pulumi/tls": "^5.0.0",
10
+ "yaml": "^2.7.0"
11
+ }
12
+ }
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "clawup",
3
+ "version": "1.0.0",
4
+ "description": "Deploy and manage a fleet of OpenClaw AI agents on AWS",
5
+ "bin": {
6
+ "clawup": "dist/bin.js"
7
+ },
8
+ "files": [
9
+ "dist",
10
+ "infra",
11
+ "scripts"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "watch": "tsc --watch",
16
+ "postinstall": "node scripts/postinstall.mjs"
17
+ },
18
+ "dependencies": {
19
+ "@clawup/core": "workspace:*",
20
+ "@clack/prompts": "^0.9",
21
+ "commander": "^13.0",
22
+ "picocolors": "^1.1",
23
+ "yaml": "^2.7.0"
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "^20.0.0",
27
+ "typescript": "^5.0.0"
28
+ },
29
+ "engines": {
30
+ "node": ">=18"
31
+ },
32
+ "license": "MIT",
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/stepandel/clawup.git",
36
+ "directory": "packages/cli"
37
+ },
38
+ "homepage": "https://agent-army.ai",
39
+ "exports": {
40
+ "./lib/constants": "./dist/lib/constants.js",
41
+ "./types": "./dist/types.js"
42
+ }
43
+ }