@cardelli/ambit 0.1.3 → 0.1.4

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 (45) hide show
  1. package/esm/deno.d.ts +1 -0
  2. package/esm/deno.js +3 -2
  3. package/esm/deps/jsr.io/@std/cli/1.0.28/_data.d.ts.map +1 -0
  4. package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/_run_length.d.ts.map +1 -1
  5. package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/mod.d.ts.map +1 -1
  6. package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/parse_args.d.ts.map +1 -1
  7. package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/parse_args.js +17 -3
  8. package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/prompt_secret.d.ts.map +1 -1
  9. package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/unicode_width.d.ts.map +1 -1
  10. package/esm/deps/jsr.io/@std/collections/{1.1.3 → 1.1.6}/deep_merge.d.ts +2 -2
  11. package/esm/deps/jsr.io/@std/collections/{1.1.3 → 1.1.6}/deep_merge.d.ts.map +1 -1
  12. package/esm/deps/jsr.io/@std/collections/{1.1.3 → 1.1.6}/deep_merge.js +30 -20
  13. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
  14. package/esm/main.d.ts.map +1 -1
  15. package/esm/main.js +3 -2
  16. package/esm/src/cli/commands/create.js +1 -1
  17. package/esm/src/cli/commands/deploy.js +44 -22
  18. package/esm/src/cli/commands/destroy.js +224 -29
  19. package/esm/src/cli/commands/doctor.js +1 -1
  20. package/esm/src/cli/commands/list.js +1 -1
  21. package/esm/src/cli/commands/status.js +1 -1
  22. package/esm/src/cli/mod.d.ts.map +1 -1
  23. package/esm/src/cli/mod.js +4 -3
  24. package/esm/src/discovery.d.ts +10 -0
  25. package/esm/src/discovery.d.ts.map +1 -1
  26. package/esm/src/discovery.js +28 -0
  27. package/esm/src/template.d.ts +5 -3
  28. package/esm/src/template.d.ts.map +1 -1
  29. package/esm/src/template.js +17 -9
  30. package/package.json +1 -1
  31. package/esm/deps/jsr.io/@std/cli/1.0.27/_data.d.ts.map +0 -1
  32. package/esm/deps/jsr.io/@std/collections/1.1.3/_utils.d.ts +0 -6
  33. package/esm/deps/jsr.io/@std/collections/1.1.3/_utils.d.ts.map +0 -1
  34. package/esm/deps/jsr.io/@std/collections/1.1.3/_utils.js +0 -18
  35. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/_data.d.ts +0 -0
  36. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/_data.js +0 -0
  37. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/_run_length.d.ts +0 -0
  38. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/_run_length.js +0 -0
  39. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/mod.d.ts +0 -0
  40. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/mod.js +0 -0
  41. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/parse_args.d.ts +0 -0
  42. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/prompt_secret.d.ts +0 -0
  43. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/prompt_secret.js +0 -0
  44. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/unicode_width.d.ts +0 -0
  45. /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.28}/unicode_width.js +0 -0
package/esm/deno.d.ts CHANGED
@@ -19,6 +19,7 @@ declare namespace _default {
19
19
  "./src/discovery": string;
20
20
  "./src/guard": string;
21
21
  "./src/resolve": string;
22
+ "./src/template": string;
22
23
  };
23
24
  let tasks: {
24
25
  dev: string;
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "@cardelli/ambit",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Deploy apps to the cloud that only you and your AI agents can reach",
5
5
  "license": "MIT",
6
6
  "exports": {
@@ -18,7 +18,8 @@ export default {
18
18
  "./src/credentials": "./src/credentials.ts",
19
19
  "./src/discovery": "./src/discovery.ts",
20
20
  "./src/guard": "./src/guard.ts",
21
- "./src/resolve": "./src/resolve.ts"
21
+ "./src/resolve": "./src/resolve.ts",
22
+ "./src/template": "./src/template.ts"
22
23
  },
23
24
  "tasks": {
24
25
  "dev": "deno run --watch main.ts",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_data.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.28/_data.js"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"_run_length.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.27/_run_length.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;;;EA0B5C;AAED,wBAAgB,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,2BAUjE"}
1
+ {"version":3,"file":"_run_length.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.28/_run_length.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;;;EA0B5C;AAED,wBAAgB,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,2BAUjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.27/mod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.28/mod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse_args.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.27/parse_args.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAEH;;GAEG;AACH,KAAK,EAAE,CAAC,OAAO,IAAI,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtD,OAAO,SAAS,MAAM,cAAc,GAClC;KAAG,GAAG,IAAI,MAAM,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CAAE,GAC5D,KAAK,GACL,OAAO,CAAC;AAEZ;;GAEG;AACH,KAAK,mBAAmB,CAAC,MAAM,IAC7B,CAAC,MAAM,SAAS,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,KAAK,CAAC,SAC1D,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,OAAO,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GACxE,KAAK,CAAC;AAEZ,gBAAgB;AAChB,KAAK,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAChD,gBAAgB;AAChB,KAAK,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AACrC,gBAAgB;AAChB,KAAK,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAExC,gBAAgB;AAChB,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACtC,gBAAgB;AAChB,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpC,KAAK,QAAQ,CACX,SAAS,SAAS,WAAW,EAC7B,QAAQ,SAAS,UAAU,EAC3B,YAAY,SAAS,WAAW,IAC9B,SAAS,SAAS,CAClB,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,GACjD,YAAY,GACZ,QAAQ,CACX,GAAG,KAAK,GACL,IAAI,CAAC;AAET;;;;GAIG;AACH,KAAK,MAAM,CACT,SAAS,SAAS,WAAW,EAC7B,QAAQ,SAAS,UAAU,EAC3B,YAAY,SAAS,WAAW,EAChC,UAAU,SAAS,SAAS,EAC5B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,IAClC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,IAAI,GACtD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,UAAU,CACV,cAAc,CACV,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,GACzD,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,GAClE,oBAAoB,CACpB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,CACX,EACD,WAAW,CAAC,QAAQ,CAAC,CACtB,EACD,QAAQ,CACT,GAED,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAExB,gBAAgB;AAChB,KAAK,OAAO,CAAC,SAAS,GAAG,MAAM,EAAE,WAAW,SAAS,MAAM,GAAG,MAAM,IAAI,OAAO,CAC7E,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAC7E,CAAC;AAEF,KAAK,UAAU,CACb,KAAK,EACL,QAAQ,SAAS,OAAO,GAAG,SAAS,IAClC;KACD,QAAQ,IAAI,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC7E,CAAC;AAEF,KAAK,UAAU,CACb,QAAQ,EACR,QAAQ,SAAS,OAAO,GAAG,SAAS,IAClC,QAAQ,SAAS,MAAM,QAAQ,GAC/B,MAAM,SAAS,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAC5C,QAAQ,CAAC,QAAQ,CAAC,SAAS,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GACjE,QAAQ,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,GACtC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GACvC,QAAQ,GACR,QAAQ,CAAC;AAEb;;;;;;;;GAQG;AACH,KAAK,cAAc,CAAC,KAAK,EAAE,SAAS,IAAI,SAAS,SAAS,SAAS,GAAG,KAAK,GACvE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,GAC5B;KACC,OAAO,IAAI,MAAM,SAAS,GAAG,OAAO,SAAS,MAAM,KAAK,GACrD,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,SAC1D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrB,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GACjE,SAAS,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAChD,OAAO;CACZ,GACH,KAAK,CAAC;AAEV;;;;GAIG;AACH,KAAK,QAAQ,CAAC,SAAS,SAAS,WAAW,EAAE,QAAQ,SAAS,UAAU,IAAI,EAAE,CAC5E,mBAAmB,CACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAEvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,GAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,GAE5B,WAAW,CAAC,SAAS,CAAC,GACtB,WAAW,CAAC,QAAQ,CAAC,CACxB,CACF,CAAC;AAEF,KAAK,WAAW,CAAC,SAAS,SAAS,OAAO,IAAI,OAAO,CACnD,MAAM,CAAC,SAAS,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,OAAO,CAAC,CAC/D,CAAC;AAEF,KAAK,iBAAiB,CAAC,OAAO,IAAI,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;KACvE,GAAG,IAAI,MAAM,OAAO,CAAC,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1D,GACC,OAAO,CAAC;AAEZ,gEAAgE;AAChE,KAAK,aAAa,CAChB,SAAS,SAAS,OAAO,EACzB,KAAK,EACL,YAAY,SAAS,WAAW,EAChC,UAAU,SAAS,SAAS,GAAG,SAAS,IACtC,mBAAmB,CACrB,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,MAAM,GACzC,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACpE,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,GAChE,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACpE,iBAAiB,CACjB,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CACrE,CAAC,GACJ,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAC3C,CAAC;AAEF,uEAAuE;AACvE,KAAK,QAAQ,CACX,SAAS,SAAS,OAAO,EACzB,KAAK,EACL,UAAU,SAAS,SAAS,GAAG,SAAS,IACtC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAClD,SAAS,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GAAG;KAC/C,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CACtB,IAAI,EACJ,KAAK,EACL,UAAU,SAAS,GAAG,IAAI,IAAI,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAClE;CACF,GACD,SAAS,SAAS,MAAM,GAAG,OAAO,CAChC,MAAM,CAAC,SAAS,EAAE,UAAU,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CACxE,GACD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzB,KAAK,oBAAoB,CACvB,SAAS,SAAS,WAAW,EAC7B,QAAQ,SAAS,UAAU,EAC3B,YAAY,SAAS,WAAW,EAChC,UAAU,SAAS,SAAS,IAC1B,mBAAmB,CACrB,YAAY,SAAS,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAC5D,WAAW,CAET,MAAM,CACN,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,EAClD,OAAO,CAAC,QAAQ,GAAG,SAAS,EAAE,MAAM,CAAC,CACtC,EACD,KAAK,CAAC,OAAO,CAAC,CACf,GAEC,MAAM,CACN,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,EAClD,OAAO,CAAC,QAAQ,GAAG,SAAS,EAAE,MAAM,CAAC,CACtC,EACD,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CACvB,CACF,CACJ,CAAC;AAEF,uFAAuF;AACvF,KAAK,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,OAAO,GAAG,OAAO,GACzE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAC3D,OAAO,CACL;KACG,GAAG,IAAI,MAAM,OAAO,GAAG,GAAG,SAAS,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GACjE,KAAK;CACV,CACF,CACF,GACD,OAAO,CAAC;AAEZ,KAAK,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,IAAI,SAC5C,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GAAG;KAAG,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;CAAE,GACpE;KAAG,GAAG,IAAI,IAAI,GAAG,MAAM;CAAE,CAAC;AAE9B,KAAK,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC;AAE5C,qDAAqD;AACrD,MAAM,MAAM,IAAI,CAEd,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3D,WAAW,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,IACjD,EAAE,CACF,KAAK,GACL;IACA;eACW;IACX,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC3B,GACC,CAAC,OAAO,SAAS,WAAW,GAAG,UAAU,GACvC,IAAI,SAAS,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,GAC/C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAC1B,CAAC;AAEF,gBAAgB;AAChB,KAAK,UAAU,GAAG;IAChB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,YAAY,CAC3B,SAAS,SAAS,WAAW,GAAG,WAAW,EAC3C,QAAQ,SAAS,UAAU,GAAG,UAAU,EACxC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,SAAS,EACb,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,WAAW,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAE7D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhE;;;;OAIG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEnD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7D;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,SAAS,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpE;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;CACnE;AAyED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsGG;AACH,wBAAgB,SAAS,CACvB,KAAK,SAAS,MAAM,CAClB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,CACT,EACD,WAAW,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EACnD,SAAS,SAAS,WAAW,GAAG,SAAS,EACzC,QAAQ,SAAS,UAAU,GAAG,SAAS,EACvC,YAAY,SAAS,WAAW,GAAG,SAAS,EAC5C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,SAAS,EACjE,QAAQ,SAAS,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,SAAS,GAAG,SAAS,EAC7E,cAAc,SAAS,MAAM,GAAG,MAAM,EACtC,WAAW,SAAS,MAAM,GAAG,MAAM,EAEnC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,CACpB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,CACZ,GACA,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAyQ1B"}
1
+ {"version":3,"file":"parse_args.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.28/parse_args.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  // Copyright 2018-2026 the Deno authors. MIT license.
2
2
  // This module is browser compatible.
3
- const FLAG_REGEXP = /^(?:-(?:(?<doubleDash>-)(?<negated>no-)?)?)(?<key>.+?)(?:=(?<value>.+?))?$/s;
3
+ const FLAG_REGEXP = /^(?:-(?:(?<doubleDash>-)(?<negated>no-)?)?)(?<key>.+?)(?:=(?<value>.*))?$/s;
4
4
  const LETTER_REGEXP = /[A-Za-z]/;
5
5
  const NUMBER_REGEXP = /-?\d+(\.\d*)?(e-?\d+)?$/;
6
6
  const HYPHEN_REGEXP = /^(-|--)[^-]/;
@@ -11,10 +11,20 @@ const NON_WHITESPACE_REGEXP = /\S/;
11
11
  function isNumber(string) {
12
12
  return NON_WHITESPACE_REGEXP.test(string) && Number.isFinite(Number(string));
13
13
  }
14
+ function isConstructorOrProto(obj, key) {
15
+ return (key === "constructor" && typeof obj[key] === "function") ||
16
+ key === "__proto__";
17
+ }
14
18
  function setNested(object, keys, value, collect = false) {
15
19
  keys = [...keys];
16
20
  const key = keys.pop();
17
- keys.forEach((key) => object = (object[key] ??= {}));
21
+ for (const k of keys) {
22
+ if (isConstructorOrProto(object, k))
23
+ return;
24
+ object = (object[k] ??= {});
25
+ }
26
+ if (isConstructorOrProto(object, key))
27
+ return;
18
28
  if (collect) {
19
29
  const v = object[key];
20
30
  if (Array.isArray(v)) {
@@ -239,7 +249,7 @@ export function parseArgs(args, options) {
239
249
  let key = groups.key;
240
250
  let value = groups.value;
241
251
  if (doubleDash) {
242
- if (value) {
252
+ if (value != null) {
243
253
  if (booleanSet.has(key))
244
254
  value = parseBooleanString(value);
245
255
  setArgument(key, value, arg, true);
@@ -281,6 +291,10 @@ export function parseArgs(args, options) {
281
291
  setArgument(letter, next, arg, true);
282
292
  continue;
283
293
  }
294
+ if (next === "=") {
295
+ setArgument(letter, "", arg, true);
296
+ continue argsLoop;
297
+ }
284
298
  if (LETTER_REGEXP.test(letter)) {
285
299
  const groups = VALUE_REGEXP.exec(next)?.groups;
286
300
  if (groups) {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt_secret.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.27/prompt_secret.ts"],"names":[],"mappings":"AAiBA,4CAA4C;AAC5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,SAAW,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,GAAG,IAAI,CAyDf"}
1
+ {"version":3,"file":"prompt_secret.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.28/prompt_secret.ts"],"names":[],"mappings":"AAiBA,4CAA4C;AAC5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,SAAW,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,GAAG,IAAI,CAyDf"}
@@ -1 +1 @@
1
- {"version":3,"file":"unicode_width.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.27/unicode_width.ts"],"names":[],"mappings":"AAsCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
1
+ {"version":3,"file":"unicode_width.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.28/unicode_width.ts"],"names":[],"mappings":"AAsCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
@@ -280,7 +280,7 @@ export type MergeAllSets<T, U, X = PartialByType<T, Set<unknown>>, Y = PartialBy
280
280
  }> = Z;
281
281
  /** Get array values type */
282
282
  export type ArrayValueType<T> = T extends Array<infer V> ? V : never;
283
- /** Merge all sets types definitions from keys present in both objects */
283
+ /** Merge all arrays types definitions from keys present in both objects */
284
284
  export type MergeAllArrays<T, U, X = PartialByType<T, Array<unknown>>, Y = PartialByType<U, Array<unknown>>, Z = {
285
285
  [K in keyof X & keyof Y]: Array<ArrayValueType<X[K]> | ArrayValueType<Y[K]>>;
286
286
  }> = Z;
@@ -288,7 +288,7 @@ export type MergeAllArrays<T, U, X = PartialByType<T, Array<unknown>>, Y = Parti
288
288
  export type MapKeyType<T> = T extends Map<infer K, unknown> ? K : never;
289
289
  /** Get map values types */
290
290
  export type MapValueType<T> = T extends Map<unknown, infer V> ? V : never;
291
- /** Merge all sets types definitions from keys present in both objects */
291
+ /** Merge all maps types definitions from keys present in both objects */
292
292
  export type MergeAllMaps<T, U, X = PartialByType<T, Map<unknown, unknown>>, Y = PartialByType<U, Map<unknown, unknown>>, Z = {
293
293
  [K in keyof X & keyof Y]: Map<MapKeyType<X[K]> | MapKeyType<Y[K]>, MapValueType<X[K]> | MapValueType<Y[K]>>;
294
294
  }> = Z;
@@ -1 +1 @@
1
- {"version":3,"file":"deep_merge.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/collections/1.1.3/deep_merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deep_merge.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/collections/1.1.6/deep_merge.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
- // Copyright 2018-2025 the Deno authors. MIT license.
1
+ // Copyright 2018-2026 the Deno authors. MIT license.
2
2
  // This module is browser compatible.
3
- import { filterInPlace } from "./_utils.js";
3
+ /** Default merging options - cached to avoid object allocation on each call */
4
+ const DEFAULT_OPTIONS = {
5
+ arrays: "merge",
6
+ sets: "merge",
7
+ maps: "merge",
8
+ };
4
9
  export function deepMerge(record, other, options) {
5
- return deepMergeInternal(record, other, new Set(), options);
10
+ return deepMergeInternal(record, other, new Set(), options ?? DEFAULT_OPTIONS);
6
11
  }
7
12
  function deepMergeInternal(record, other, seen, options) {
8
13
  const result = {};
@@ -33,11 +38,7 @@ function deepMergeInternal(record, other, seen, options) {
33
38
  }
34
39
  return result;
35
40
  }
36
- function mergeObjects(left, right, seen, options = {
37
- arrays: "merge",
38
- sets: "merge",
39
- maps: "merge",
40
- }) {
41
+ function mergeObjects(left, right, seen, options) {
41
42
  // Recursively merge mergeable objects
42
43
  if (isMergeable(left) && isMergeable(right)) {
43
44
  return deepMergeInternal(left, right, seen, options);
@@ -53,20 +54,22 @@ function mergeObjects(left, right, seen, options = {
53
54
  // Handle maps
54
55
  if ((left instanceof Map) && (right instanceof Map)) {
55
56
  if (options.maps === "merge") {
56
- return new Map([
57
- ...left,
58
- ...right,
59
- ]);
57
+ const result = new Map(left);
58
+ for (const [k, v] of right) {
59
+ result.set(k, v);
60
+ }
61
+ return result;
60
62
  }
61
63
  return right;
62
64
  }
63
65
  // Handle sets
64
66
  if ((left instanceof Set) && (right instanceof Set)) {
65
67
  if (options.sets === "merge") {
66
- return new Set([
67
- ...left,
68
- ...right,
69
- ]);
68
+ const result = new Set(left);
69
+ for (const v of right) {
70
+ result.add(v);
71
+ }
72
+ return result;
70
73
  }
71
74
  return right;
72
75
  }
@@ -88,8 +91,15 @@ function isNonNullObject(value) {
88
91
  return value !== null && typeof value === "object";
89
92
  }
90
93
  function getKeys(record) {
91
- const result = Object.getOwnPropertySymbols(record);
92
- filterInPlace(result, (key) => Object.prototype.propertyIsEnumerable.call(record, key));
93
- result.push(...Object.keys(record));
94
- return result;
94
+ const keys = Object.keys(record);
95
+ const symbols = Object.getOwnPropertySymbols(record);
96
+ // Fast path: most objects have no symbol keys
97
+ if (symbols.length === 0)
98
+ return keys;
99
+ for (const sym of symbols) {
100
+ if (Object.prototype.propertyIsEnumerable.call(record, sym)) {
101
+ keys.push(sym);
102
+ }
103
+ }
104
+ return keys;
95
105
  }
@@ -1,6 +1,6 @@
1
1
  // Copyright 2018-2025 the Deno authors. MIT license.
2
2
  // This module is browser compatible.
3
- import { deepMerge } from "../../collections/1.1.3/deep_merge.js";
3
+ import { deepMerge } from "../../collections/1.1.6/deep_merge.js";
4
4
  /**
5
5
  * Copy of `import { isLeap } from "@std/datetime";` because it cannot be impoted as long as it is unstable.
6
6
  */
package/esm/main.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,qBAAqB,CAAC;AA8B7B,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,qBAAqB,CAAC;AA+B7B,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC"}
package/esm/main.js CHANGED
@@ -13,13 +13,14 @@ import * as dntShim from "./_dnt.shims.js";
13
13
  // create Create a Tailscale subnet router on a Fly.io custom network
14
14
  // deploy Deploy an app safely on a custom private network
15
15
  // status Show router status, network, and tailnet info
16
- // destroy Tear down the router, clean up DNS and tailnet device
16
+ // destroy Destroy a network (router) or a workload app
17
17
  // doctor Check that Tailscale and the router are working correctly
18
18
  //
19
19
  // Examples:
20
20
  // ambit create browsers
21
21
  // ambit status
22
- // ambit destroy
22
+ // ambit destroy network browsers
23
+ // ambit destroy app my-app.browsers
23
24
  // ambit doctor
24
25
  //
25
26
  // =============================================================================
@@ -1,7 +1,7 @@
1
1
  // =============================================================================
2
2
  // Create Command - Create Tailscale Subnet Router on Fly.io Custom Network
3
3
  // =============================================================================
4
- import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.27/mod.js";
4
+ import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.28/mod.js";
5
5
  import { bold, randomId, readSecret } from "../../../lib/cli.js";
6
6
  import { createOutput } from "../../../lib/output.js";
7
7
  import { registerCommand } from "../mod.js";
@@ -2,7 +2,7 @@
2
2
  // Deploy Command - Safely Deploy a Workload App on a Custom Private Network
3
3
  // =============================================================================
4
4
  import * as dntShim from "../../../_dnt.shims.js";
5
- import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.27/mod.js";
5
+ import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.28/mod.js";
6
6
  import { join } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
7
7
  import { bold, confirm, fileExists } from "../../../lib/cli.js";
8
8
  import { createOutput } from "../../../lib/output.js";
@@ -99,10 +99,12 @@ const resolveTemplateMode = async (templateRaw, out) => {
99
99
  const ref = parseTemplateRef(templateRaw);
100
100
  if (!ref) {
101
101
  out.die(`Invalid Template Reference: "${templateRaw}". ` +
102
- `Format: owner/repo/path[@ref]`);
102
+ `Format: owner/repo[/path][@ref]`);
103
103
  return null;
104
104
  }
105
- const label = `${ref.owner}/${ref.repo}/${ref.path}` +
105
+ const label = (ref.path === "."
106
+ ? `${ref.owner}/${ref.repo}`
107
+ : `${ref.owner}/${ref.repo}/${ref.path}`) +
106
108
  (ref.ref ? `@${ref.ref}` : "");
107
109
  out.info(`Template: ${label}`);
108
110
  const fetchSpinner = out.spinner("Fetching Template from GitHub");
@@ -124,7 +126,7 @@ const resolveTemplateMode = async (templateRaw, out) => {
124
126
  dntShim.Deno.removeSync(result.tempDir, { recursive: true });
125
127
  }
126
128
  catch { /* ignore */ }
127
- out.die(`Template '${ref.path}' Has No fly.toml`);
129
+ out.die(`Template '${ref.path === "." ? ref.repo : ref.path}' Has No fly.toml`);
128
130
  return null;
129
131
  }
130
132
  const scan = scanFlyToml(tomlContent);
@@ -142,7 +144,7 @@ const resolveTemplateMode = async (templateRaw, out) => {
142
144
  for (const warn of scan.warnings) {
143
145
  out.warn(warn);
144
146
  }
145
- out.ok(`Scanned ${ref.path}/fly.toml`);
147
+ out.ok(`Scanned ${ref.path === "." ? "" : ref.path + "/"}fly.toml`);
146
148
  return {
147
149
  configPath,
148
150
  preflight: { scanned: scan.scanned, warnings: scan.warnings },
@@ -172,21 +174,24 @@ const deploy = async (argv) => {
172
174
  ${bold("ambit deploy")} - Deploy an App Safely on a Custom Private Network
173
175
 
174
176
  ${bold("USAGE")}
177
+ ambit deploy <app>.<network> [options]
175
178
  ambit deploy <app> --network <name> [options]
176
179
 
180
+ The network can be specified as part of the name (app.network) or with --network.
181
+
177
182
  ${bold("MODES")}
178
183
  Config mode (default):
179
- ambit deploy <app> --network <name> Uses ./fly.toml
180
- ambit deploy <app> --network <name> --config path Explicit fly.toml
184
+ ambit deploy my-app.lab Uses ./fly.toml
185
+ ambit deploy my-app.lab --config path Explicit fly.toml
181
186
 
182
187
  Image mode:
183
- ambit deploy <app> --network <name> --image <img> Docker image, no toml
188
+ ambit deploy my-app.lab --image <img> Docker image, no toml
184
189
 
185
190
  Template mode:
186
- ambit deploy <app> --network <name> --template <ref> GitHub template
191
+ ambit deploy my-app.lab --template <ref> GitHub template
187
192
 
188
193
  ${bold("OPTIONS")}
189
- --network <name> Custom 6PN network to target (required)
194
+ --network <name> Target network
190
195
  --org <org> Fly.io organization slug
191
196
  --region <region> Primary deployment region
192
197
  -y, --yes Skip confirmation prompts
@@ -200,10 +205,11 @@ ${bold("IMAGE MODE")}
200
205
  --main-port <port> Internal port for HTTP service (default: 80, "none" to skip)
201
206
 
202
207
  ${bold("TEMPLATE MODE")}
203
- --template <ref> GitHub template as owner/repo/path[@ref]
208
+ --template <ref> GitHub template as owner/repo[/path][@ref]
204
209
 
205
210
  Reference format:
206
- owner/repo/path Fetch from the default branch
211
+ owner/repo Fetch repo root from the default branch
212
+ owner/repo/path Fetch subdirectory from the default branch
207
213
  owner/repo/path@tag Fetch a tagged release
208
214
  owner/repo/path@branch Fetch a specific branch
209
215
  owner/repo/path@commit Fetch a specific commit
@@ -214,11 +220,12 @@ ${bold("SAFETY")}
214
220
  Pre-flight scan rejects fly.toml with force_https or TLS on 443.
215
221
 
216
222
  ${bold("EXAMPLES")}
217
- ambit deploy my-app --network browsers
218
- ambit deploy my-app --network browsers --image registry/img:latest
219
- ambit deploy my-app --network browsers --config ./fly.toml --region sea
220
- ambit deploy my-browser --network lab --template ToxicPine/ambit-templates/cdp
221
- ambit deploy my-browser --network lab --template ToxicPine/ambit-templates/cdp@v1.0
223
+ ambit deploy my-app.lab
224
+ ambit deploy my-app.lab --image registry/img:latest
225
+ ambit deploy my-app.lab --config ./fly.toml --region sea
226
+ ambit deploy my-claw.lab --template ToxicPine/ambit-openclaw
227
+ ambit deploy my-browser.lab --template ToxicPine/ambit-templates/chromatic
228
+ ambit deploy my-browser --network lab --template ToxicPine/ambit-templates/chromatic@v1.0
222
229
  `);
223
230
  return;
224
231
  }
@@ -228,11 +235,27 @@ ${bold("EXAMPLES")}
228
235
  // ==========================================================================
229
236
  const appArg = args._[0];
230
237
  if (!appArg || typeof appArg !== "string") {
231
- return out.die("App Name Required. Usage: ambit deploy <app> --network <name>");
238
+ return out.die("Missing app name. Usage: ambit deploy <app>.<network>");
239
+ }
240
+ let app;
241
+ let network;
242
+ if (appArg.includes(".")) {
243
+ const parts = appArg.split(".");
244
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
245
+ return out.die(`'${appArg}' should have exactly one dot, like my-app.my-network`);
246
+ }
247
+ if (args.network) {
248
+ return out.die(`Network is already part of the name ('${appArg}'), --network is not needed`);
249
+ }
250
+ app = parts[0];
251
+ network = parts[1];
232
252
  }
233
- const app = appArg;
234
- if (!args.network) {
235
- return out.die("--network Is Required");
253
+ else {
254
+ app = appArg;
255
+ if (!args.network) {
256
+ return out.die(`Missing network. Use: ambit deploy ${app}.<network>`);
257
+ }
258
+ network = args.network;
236
259
  }
237
260
  try {
238
261
  assertNotRouter(app);
@@ -244,7 +267,6 @@ ${bold("EXAMPLES")}
244
267
  if (modeFlags.length > 1) {
245
268
  return out.die("--image, --config, and --template Are Mutually Exclusive");
246
269
  }
247
- const network = args.network;
248
270
  out.blank()
249
271
  .header("=".repeat(50))
250
272
  .header(` ambit Deploy: ${app}`)
@@ -1,19 +1,47 @@
1
1
  // =============================================================================
2
- // Destroy Command - Tear Down Router and Clean Up
2
+ // Destroy Command - Destroy Networks or Apps
3
3
  // =============================================================================
4
- import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.27/mod.js";
4
+ import * as dntShim from "../../../_dnt.shims.js";
5
+ import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.28/mod.js";
5
6
  import { bold, confirm } from "../../../lib/cli.js";
6
7
  import { createOutput } from "../../../lib/output.js";
7
8
  import { registerCommand } from "../mod.js";
8
9
  import { createFlyProvider } from "../../providers/fly.js";
9
10
  import { createTailscaleProvider } from "../../providers/tailscale.js";
10
11
  import { checkDependencies } from "../../credentials.js";
11
- import { findRouterApp } from "../../discovery.js";
12
+ import { findRouterApp, findWorkloadApp, listWorkloadAppsOnNetwork, } from "../../discovery.js";
12
13
  import { resolveOrg } from "../../resolve.js";
14
+ import { assertNotRouter } from "../../guard.js";
13
15
  // =============================================================================
14
- // Destroy Command
16
+ // Top-Level Help
15
17
  // =============================================================================
16
- const destroy = async (argv) => {
18
+ const showDestroyHelp = () => {
19
+ console.log(`
20
+ ${bold("ambit destroy")} - Destroy Networks or Apps
21
+
22
+ ${bold("USAGE")}
23
+ ambit destroy network <name> [options]
24
+ ambit destroy app <app>.<network> [options]
25
+
26
+ ${bold("SUBCOMMANDS")}
27
+ network Tear down a router, clean up DNS and tailnet device
28
+ app Destroy a workload app on a network
29
+
30
+ ${bold("OPTIONS")}
31
+ --help Show help for a subcommand
32
+
33
+ ${bold("EXAMPLES")}
34
+ ambit destroy network browsers
35
+ ambit destroy app my-app.browsers
36
+ ambit destroy app my-app --network browsers
37
+
38
+ Run 'ambit destroy network --help' or 'ambit destroy app --help' for details.
39
+ `);
40
+ };
41
+ // =============================================================================
42
+ // Destroy Network
43
+ // =============================================================================
44
+ const destroyNetwork = async (argv) => {
17
45
  const args = parseArgs(argv, {
18
46
  string: ["network", "org"],
19
47
  boolean: ["help", "yes", "json"],
@@ -21,57 +49,78 @@ const destroy = async (argv) => {
21
49
  });
22
50
  if (args.help) {
23
51
  console.log(`
24
- ${bold("ambit destroy")} - Tear Down Router
52
+ ${bold("ambit destroy network")} - Tear Down Router
25
53
 
26
54
  ${bold("USAGE")}
27
- ambit destroy --network <name> [--org <org>] [--yes] [--json]
55
+ ambit destroy network <name> [--org <org>] [--yes] [--json]
28
56
 
29
57
  ${bold("OPTIONS")}
30
- --network <name> Network of the router to destroy (required)
31
58
  --org <org> Fly.io organization slug
32
59
  -y, --yes Skip confirmation prompts
33
60
  --json Output as JSON
61
+
62
+ ${bold("EXAMPLES")}
63
+ ambit destroy network browsers
64
+ ambit destroy network browsers --org my-org --yes
34
65
  `);
35
66
  return;
36
67
  }
37
68
  const out = createOutput(args.json);
38
- if (!args.network) {
39
- return out.die("--network Is Required");
69
+ // Accept network as positional or --network flag (backward compat)
70
+ const network = (typeof args._[0] === "string" ? args._[0] : undefined) || args.network;
71
+ if (!network) {
72
+ return out.die("Network name required. Usage: ambit destroy network <name>");
40
73
  }
41
- // =========================================================================
74
+ // ===========================================================================
42
75
  // Prerequisites
43
- // =========================================================================
76
+ // ===========================================================================
44
77
  const { tailscaleKey } = await checkDependencies(out);
45
78
  const fly = createFlyProvider();
46
79
  await fly.ensureAuth({ interactive: !args.json });
47
80
  const tailscale = createTailscaleProvider("-", tailscaleKey);
48
81
  const org = await resolveOrg(fly, args, out);
49
- // =========================================================================
82
+ // ===========================================================================
50
83
  // Discover Router
51
- // =========================================================================
84
+ // ===========================================================================
52
85
  const spinner = out.spinner("Discovering Router");
53
- const app = await findRouterApp(fly, org, args.network);
86
+ const app = await findRouterApp(fly, org, network);
54
87
  if (!app) {
55
88
  spinner.fail("Router Not Found");
56
- return out.die(`No Router Found for Network '${args.network}'`);
89
+ return out.die(`No Router Found for Network '${network}'`);
57
90
  }
58
91
  spinner.success(`Found Router: ${app.appName}`);
59
92
  let tsDevice = null;
60
93
  try {
61
94
  tsDevice = await tailscale.getDeviceByHostname(app.appName);
62
95
  }
63
- catch { /* device may not exist */ }
96
+ catch {
97
+ /* device may not exist */
98
+ }
64
99
  const tag = tsDevice?.tags?.[0] ?? null;
65
- // =========================================================================
100
+ // ===========================================================================
101
+ // Check for Workload Apps on This Network
102
+ // ===========================================================================
103
+ const workloadApps = await listWorkloadAppsOnNetwork(fly, org, network);
104
+ // ===========================================================================
66
105
  // Confirm
67
- // =========================================================================
106
+ // ===========================================================================
68
107
  out.blank()
69
- .header("ambit Destroy")
108
+ .header("ambit Destroy Network")
70
109
  .blank()
71
- .text(` Network: ${app.network}`)
110
+ .text(` Network: ${network}`)
72
111
  .text(` Router App: ${app.appName}`)
73
112
  .text(` Tag: ${tag ?? "unknown"}`)
74
113
  .blank();
114
+ if (workloadApps.length > 0) {
115
+ out.warn(`${workloadApps.length} workload app(s) still on network '${network}':`);
116
+ for (const wa of workloadApps) {
117
+ out.text(` - ${wa.appName}`);
118
+ }
119
+ out.blank();
120
+ out.dim("These apps will lose connectivity when the router is destroyed.");
121
+ out.dim(`Consider destroying them first with: ambit destroy app <name>.${network}`);
122
+ out.blank();
123
+ }
75
124
  if (!args.yes && !args.json) {
76
125
  const confirmed = await confirm("Destroy this router?");
77
126
  if (!confirmed) {
@@ -80,12 +129,12 @@ ${bold("OPTIONS")}
80
129
  }
81
130
  out.blank();
82
131
  }
83
- // =========================================================================
132
+ // ===========================================================================
84
133
  // Tear Down
85
- // =========================================================================
134
+ // ===========================================================================
86
135
  const dnsSpinner = out.spinner("Clearing Split DNS");
87
136
  try {
88
- await tailscale.clearSplitDns(app.network);
137
+ await tailscale.clearSplitDns(network);
89
138
  dnsSpinner.success("Split DNS Cleared");
90
139
  }
91
140
  catch {
@@ -113,10 +162,14 @@ ${bold("OPTIONS")}
113
162
  catch {
114
163
  appSpinner.fail("Could Not Destroy Fly App");
115
164
  }
116
- // =========================================================================
165
+ // ===========================================================================
117
166
  // Done
118
- // =========================================================================
119
- out.done({ destroyed: true, appName: app.appName });
167
+ // ===========================================================================
168
+ out.done({
169
+ destroyed: true,
170
+ appName: app.appName,
171
+ workloadAppsWarned: workloadApps.length,
172
+ });
120
173
  out.ok("Router Destroyed");
121
174
  if (tag) {
122
175
  out.blank()
@@ -135,11 +188,153 @@ ${bold("OPTIONS")}
135
188
  out.print();
136
189
  };
137
190
  // =============================================================================
191
+ // Destroy App
192
+ // =============================================================================
193
+ const destroyApp = async (argv) => {
194
+ const args = parseArgs(argv, {
195
+ string: ["network", "org"],
196
+ boolean: ["help", "yes", "json"],
197
+ alias: { y: "yes" },
198
+ });
199
+ if (args.help) {
200
+ console.log(`
201
+ ${bold("ambit destroy app")} - Destroy a Workload App
202
+
203
+ ${bold("USAGE")}
204
+ ambit destroy app <app>.<network> [--org <org>] [--yes] [--json]
205
+ ambit destroy app <app> --network <name> [--org <org>] [--yes] [--json]
206
+
207
+ ${bold("OPTIONS")}
208
+ --network <name> Target network (if not using dot syntax)
209
+ --org <org> Fly.io organization slug
210
+ -y, --yes Skip confirmation prompts
211
+ --json Output as JSON
212
+
213
+ ${bold("EXAMPLES")}
214
+ ambit destroy app my-app.browsers
215
+ ambit destroy app my-app --network browsers --yes
216
+ `);
217
+ return;
218
+ }
219
+ const out = createOutput(args.json);
220
+ // ===========================================================================
221
+ // Parse App & Network
222
+ // ===========================================================================
223
+ const appArg = args._[0];
224
+ if (!appArg || typeof appArg !== "string") {
225
+ return out.die("Missing app name. Usage: ambit destroy app <app>.<network>");
226
+ }
227
+ let app;
228
+ let network;
229
+ if (appArg.includes(".")) {
230
+ const parts = appArg.split(".");
231
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
232
+ return out.die(`'${appArg}' should have exactly one dot, like my-app.my-network`);
233
+ }
234
+ if (args.network) {
235
+ return out.die(`Network is already part of the name ('${appArg}'), --network is not needed`);
236
+ }
237
+ app = parts[0];
238
+ network = parts[1];
239
+ }
240
+ else {
241
+ app = appArg;
242
+ if (!args.network) {
243
+ return out.die(`Missing network. Use: ambit destroy app ${app}.<network>`);
244
+ }
245
+ network = args.network;
246
+ }
247
+ try {
248
+ assertNotRouter(app);
249
+ }
250
+ catch (e) {
251
+ return out.die(e instanceof Error ? e.message : String(e));
252
+ }
253
+ // ===========================================================================
254
+ // Prerequisites
255
+ // ===========================================================================
256
+ const { tailscaleKey: _tailscaleKey } = await checkDependencies(out);
257
+ const fly = createFlyProvider();
258
+ await fly.ensureAuth({ interactive: !args.json });
259
+ const org = await resolveOrg(fly, args, out);
260
+ // ===========================================================================
261
+ // Discover App
262
+ // ===========================================================================
263
+ const spinner = out.spinner("Discovering App");
264
+ const workloadApp = await findWorkloadApp(fly, org, app, network);
265
+ if (!workloadApp) {
266
+ spinner.fail("App Not Found");
267
+ // Check if app exists on a different network
268
+ const anyApp = await findWorkloadApp(fly, org, app);
269
+ if (anyApp) {
270
+ return out.die(`App '${app}' exists on network '${anyApp.network}', not '${network}'`);
271
+ }
272
+ return out.die(`No app '${app}' found on network '${network}'`);
273
+ }
274
+ spinner.success(`Found App: ${workloadApp.appName} (network: ${workloadApp.network})`);
275
+ // ===========================================================================
276
+ // Confirm
277
+ // ===========================================================================
278
+ out.blank()
279
+ .header("ambit Destroy App")
280
+ .blank()
281
+ .text(` App: ${workloadApp.appName}`)
282
+ .text(` Network: ${workloadApp.network}`)
283
+ .blank();
284
+ if (!args.yes && !args.json) {
285
+ const confirmed = await confirm(`Destroy app '${app}' on network '${network}'?`);
286
+ if (!confirmed) {
287
+ out.text("Cancelled.");
288
+ return;
289
+ }
290
+ out.blank();
291
+ }
292
+ // ===========================================================================
293
+ // Destroy
294
+ // ===========================================================================
295
+ const appSpinner = out.spinner("Destroying Fly App");
296
+ try {
297
+ await fly.deleteApp(app);
298
+ appSpinner.success("Fly App Destroyed");
299
+ }
300
+ catch {
301
+ appSpinner.fail("Could Not Destroy Fly App");
302
+ }
303
+ // ===========================================================================
304
+ // Done
305
+ // ===========================================================================
306
+ out.done({ destroyed: true, appName: app, network });
307
+ out.ok("App Destroyed");
308
+ out.blank();
309
+ out.print();
310
+ };
311
+ // =============================================================================
312
+ // Dispatcher
313
+ // =============================================================================
314
+ const destroy = async (argv) => {
315
+ const subcommand = typeof argv[0] === "string" ? argv[0] : undefined;
316
+ if (subcommand === "network") {
317
+ return destroyNetwork(argv.slice(1));
318
+ }
319
+ if (subcommand === "app") {
320
+ return destroyApp(argv.slice(1));
321
+ }
322
+ // Handle --help at the top level
323
+ const args = parseArgs(argv, { boolean: ["help"] });
324
+ if (args.help) {
325
+ showDestroyHelp();
326
+ return;
327
+ }
328
+ // No valid subcommand
329
+ showDestroyHelp();
330
+ dntShim.Deno.exit(1);
331
+ };
332
+ // =============================================================================
138
333
  // Register Command
139
334
  // =============================================================================
140
335
  registerCommand({
141
336
  name: "destroy",
142
- description: "Tear down the router, clean up DNS and tailnet device",
143
- usage: "ambit destroy --network <name> [--org <org>] [--yes] [--json]",
337
+ description: "Destroy a network (router) or a workload app",
338
+ usage: "ambit destroy network|app <name> [options]",
144
339
  run: destroy,
145
340
  });
@@ -1,7 +1,7 @@
1
1
  // =============================================================================
2
2
  // Doctor Command - Verify Environment and Infrastructure Health
3
3
  // =============================================================================
4
- import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.27/mod.js";
4
+ import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.28/mod.js";
5
5
  import { bold } from "../../../lib/cli.js";
6
6
  import { createOutput } from "../../../lib/output.js";
7
7
  import { runCommand } from "../../../lib/command.js";
@@ -1,7 +1,7 @@
1
1
  // =============================================================================
2
2
  // List Command - List All Discovered Routers
3
3
  // =============================================================================
4
- import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.27/mod.js";
4
+ import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.28/mod.js";
5
5
  import { Table } from "../../../deps/jsr.io/@cliffy/table/1.0.0/mod.js";
6
6
  import { bold } from "../../../lib/cli.js";
7
7
  import { createOutput } from "../../../lib/output.js";
@@ -1,7 +1,7 @@
1
1
  // =============================================================================
2
2
  // Status Command - Show Router Status
3
3
  // =============================================================================
4
- import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.27/mod.js";
4
+ import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.28/mod.js";
5
5
  import { Table } from "../../../deps/jsr.io/@cliffy/table/1.0.0/mod.js";
6
6
  import { bold } from "../../../lib/cli.js";
7
7
  import { createOutput } from "../../../lib/output.js";
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/cli/mod.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAQD,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,KAAG,IAElD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,OAAO,GAAG,SAEnD,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OAAO,EAExC,CAAC;AAQF,eAAO,MAAM,QAAQ,QAAO,IA4B3B,CAAC;AAEF,eAAO,MAAM,WAAW,QAAO,IAE9B,CAAC;AAMF,eAAO,MAAM,MAAM,GAAU,MAAM,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAuCzD,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/cli/mod.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAQD,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,KAAG,IAElD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,OAAO,GAAG,SAEnD,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OAAO,EAExC,CAAC;AAQF,eAAO,MAAM,QAAQ,QAAO,IA6B3B,CAAC;AAEF,eAAO,MAAM,WAAW,QAAO,IAE9B,CAAC;AAMF,eAAO,MAAM,MAAM,GAAU,MAAM,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAuCzD,CAAC"}
@@ -2,7 +2,7 @@
2
2
  // CLI Framework - Command Parser and Router
3
3
  // =============================================================================
4
4
  import * as dntShim from "../../_dnt.shims.js";
5
- import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.27/mod.js";
5
+ import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.28/mod.js";
6
6
  import { bold, dim } from "../../lib/cli.js";
7
7
  import denoConfig from "../../deno.js";
8
8
  // =============================================================================
@@ -34,7 +34,7 @@ ${bold("COMMANDS")}
34
34
  deploy Deploy an app safely on a custom private network
35
35
  list List all discovered routers across networks
36
36
  status Show router status, network, and tailnet info
37
- destroy Tear down the router, clean up DNS and tailnet device
37
+ destroy Destroy a network (router) or a workload app
38
38
  doctor Check that Tailscale and the router are working correctly
39
39
 
40
40
  ${bold("OPTIONS")}
@@ -45,7 +45,8 @@ ${bold("EXAMPLES")}
45
45
  ambit create browsers
46
46
  ambit list
47
47
  ambit status --network browsers
48
- ambit destroy --network browsers
48
+ ambit destroy network browsers
49
+ ambit destroy app my-app.browsers
49
50
  ambit doctor
50
51
 
51
52
  ${dim("Run 'ambit <command> --help' for command-specific help.")}
@@ -25,6 +25,16 @@ export interface RouterTailscaleInfo {
25
25
  export declare const listRouterApps: (fly: FlyProvider, org: string) => Promise<RouterApp[]>;
26
26
  /** Find the router app for a specific network. */
27
27
  export declare const findRouterApp: (fly: FlyProvider, org: string, network: string) => Promise<RouterApp | null>;
28
+ /** A workload (non-router) app discovered from the Fly REST API. */
29
+ export interface WorkloadApp {
30
+ appName: string;
31
+ network: string;
32
+ org: string;
33
+ }
34
+ /** List all non-router apps on a specific custom network in an org. */
35
+ export declare const listWorkloadAppsOnNetwork: (fly: FlyProvider, org: string, network: string) => Promise<WorkloadApp[]>;
36
+ /** Find a specific workload app by name, optionally verifying network. */
37
+ export declare const findWorkloadApp: (fly: FlyProvider, org: string, appName: string, network?: string) => Promise<WorkloadApp | null>;
28
38
  /** Get machine info for a router app. Returns null if no machines exist. */
29
39
  export declare const getRouterMachineInfo: (fly: FlyProvider, appName: string) => Promise<RouterMachineInfo | null>;
30
40
  /** Get tailscale device info for a router. Returns null if not found. */
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/src/discovery.ts"],"names":[],"mappings":"AAcA,OAAO,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAOlE,qDAAqD;AACrD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAaD,wDAAwD;AACxD,eAAO,MAAM,cAAc,GACzB,KAAK,WAAW,EAChB,KAAK,MAAM,KACV,OAAO,CAAC,SAAS,EAAE,CAcrB,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,SAAS,MAAM,KACd,OAAO,CAAC,SAAS,GAAG,IAAI,CAG1B,CAAC;AAMF,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,GAC/B,KAAK,WAAW,EAChB,SAAS,MAAM,KACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAclC,CAAC;AAMF,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,GACjC,WAAW,iBAAiB,EAC5B,SAAS,MAAM,KACd,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAcpC,CAAC"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/src/discovery.ts"],"names":[],"mappings":"AAcA,OAAO,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAOlE,qDAAqD;AACrD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAaD,wDAAwD;AACxD,eAAO,MAAM,cAAc,GACzB,KAAK,WAAW,EAChB,KAAK,MAAM,KACV,OAAO,CAAC,SAAS,EAAE,CAcrB,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,SAAS,MAAM,KACd,OAAO,CAAC,SAAS,GAAG,IAAI,CAG1B,CAAC;AAMF,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,GACpC,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,SAAS,MAAM,KACd,OAAO,CAAC,WAAW,EAAE,CAcvB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAC1B,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,SAAS,MAAM,EACf,UAAU,MAAM,KACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAmB5B,CAAC;AAMF,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,GAC/B,KAAK,WAAW,EAChB,SAAS,MAAM,KACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAclC,CAAC;AAMF,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,GACjC,WAAW,iBAAiB,EAC5B,SAAS,MAAM,KACd,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAcpC,CAAC"}
@@ -39,6 +39,34 @@ export const findRouterApp = async (fly, org, network) => {
39
39
  const apps = await listRouterApps(fly, org);
40
40
  return apps.find((a) => a.network === network) ?? null;
41
41
  };
42
+ /** List all non-router apps on a specific custom network in an org. */
43
+ export const listWorkloadAppsOnNetwork = async (fly, org, network) => {
44
+ const apps = await fly.listAppsWithNetwork(org);
45
+ return apps
46
+ .filter((app) => !app.name.startsWith(ROUTER_APP_PREFIX) &&
47
+ app.network === network)
48
+ .map((app) => ({
49
+ appName: app.name,
50
+ network: app.network,
51
+ org: app.organization?.slug ?? org,
52
+ }));
53
+ };
54
+ /** Find a specific workload app by name, optionally verifying network. */
55
+ export const findWorkloadApp = async (fly, org, appName, network) => {
56
+ const apps = await fly.listAppsWithNetwork(org);
57
+ const workloads = apps
58
+ .filter((app) => !app.name.startsWith(ROUTER_APP_PREFIX) &&
59
+ app.network !== DEFAULT_NETWORK)
60
+ .map((app) => ({
61
+ appName: app.name,
62
+ network: app.network,
63
+ org: app.organization?.slug ?? org,
64
+ }));
65
+ if (network) {
66
+ return workloads.find((a) => a.appName === appName && a.network === network) ?? null;
67
+ }
68
+ return workloads.find((a) => a.appName === appName) ?? null;
69
+ };
42
70
  // =============================================================================
43
71
  // 2. What's the machine state? (Fly Machines API)
44
72
  // =============================================================================
@@ -17,11 +17,13 @@ export type TemplateFetchResult = Result<{
17
17
  * Parse a template reference string into its components.
18
18
  * Returns null if the format is invalid.
19
19
  *
20
- * Format: owner/repo/path[@ref]
20
+ * Format: owner/repo[/path][@ref]
21
21
  *
22
22
  * The first two segments are always owner/repo. Everything after the second
23
- * slash up to an optional @ref is the path within the repository. This is
24
- * unambiguous because GitHub owner and repo names cannot contain slashes.
23
+ * slash up to an optional @ref is the path within the repository. When no
24
+ * path is provided, the repository root is used as the template directory.
25
+ * This is unambiguous because GitHub owner and repo names cannot contain
26
+ * slashes.
25
27
  */
26
28
  export declare const parseTemplateRef: (raw: string) => TemplateRef | null;
27
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/src/template.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM/C,2EAA2E;AAC3E,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,aAAa,GACb,WAAW,GACX,kBAAkB,GAClB,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,cAAc,CAAC;AAMnB,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,iBAAiB,CAClB,CAAC;AA4BF;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,WAAW,GAAG,IAyB5D,CAAC;AAMF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,KACf,OAAO,CAAC,mBAAmB,CAsH7B,CAAC"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/src/template.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM/C,2EAA2E;AAC3E,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,aAAa,GACb,WAAW,GACX,kBAAkB,GAClB,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,cAAc,CAAC;AAMnB,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,iBAAiB,CAClB,CAAC;AAgCF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,WAAW,GAAG,IAyB5D,CAAC;AAMF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,KACf,OAAO,CAAC,mBAAmB,CAsH7B,CAAC"}
@@ -6,9 +6,10 @@
6
6
  // template. Templates are expected to contain at least a fly.toml and
7
7
  // typically a Dockerfile.
8
8
  //
9
- // Reference format: owner/repo/path[@ref]
9
+ // Reference format: owner/repo[/path][@ref]
10
10
  //
11
- // ToxicPine/ambit-templates/cdp → default branch
11
+ // ToxicPine/ambit-openclaw repo root, default branch
12
+ // ToxicPine/ambit-templates/cdp → subdirectory, default branch
12
13
  // ToxicPine/ambit-templates/cdp@v1.0 → tagged release
13
14
  // ToxicPine/ambit-templates/cdp@main → explicit branch
14
15
  //
@@ -26,7 +27,12 @@ const fail = (kind, message) => ({
26
27
  message,
27
28
  });
28
29
  /** Format a template reference for display. */
29
- const formatRef = (ref) => `${ref.owner}/${ref.repo}/${ref.path}` + (ref.ref ? `@${ref.ref}` : "");
30
+ const formatRef = (ref) => {
31
+ const base = ref.path === "."
32
+ ? `${ref.owner}/${ref.repo}`
33
+ : `${ref.owner}/${ref.repo}/${ref.path}`;
34
+ return base + (ref.ref ? `@${ref.ref}` : "");
35
+ };
30
36
  /** Format owner/repo with optional ref for display. */
31
37
  const formatRepo = (ref) => `${ref.owner}/${ref.repo}` + (ref.ref ? `@${ref.ref}` : "");
32
38
  // =============================================================================
@@ -36,11 +42,13 @@ const formatRepo = (ref) => `${ref.owner}/${ref.repo}` + (ref.ref ? `@${ref.ref}
36
42
  * Parse a template reference string into its components.
37
43
  * Returns null if the format is invalid.
38
44
  *
39
- * Format: owner/repo/path[@ref]
45
+ * Format: owner/repo[/path][@ref]
40
46
  *
41
47
  * The first two segments are always owner/repo. Everything after the second
42
- * slash up to an optional @ref is the path within the repository. This is
43
- * unambiguous because GitHub owner and repo names cannot contain slashes.
48
+ * slash up to an optional @ref is the path within the repository. When no
49
+ * path is provided, the repository root is used as the template directory.
50
+ * This is unambiguous because GitHub owner and repo names cannot contain
51
+ * slashes.
44
52
  */
45
53
  export const parseTemplateRef = (raw) => {
46
54
  // Split off @ref suffix
@@ -56,13 +64,13 @@ export const parseTemplateRef = (raw) => {
56
64
  else {
57
65
  body = raw;
58
66
  }
59
- // Need at least owner/repo/path
67
+ // Need at least owner/repo
60
68
  const parts = body.split("/");
61
- if (parts.length < 3)
69
+ if (parts.length < 2)
62
70
  return null;
63
71
  const owner = parts[0];
64
72
  const repo = parts[1];
65
- const path = parts.slice(2).join("/");
73
+ const path = parts.length > 2 ? parts.slice(2).join("/") : ".";
66
74
  if (!owner || !repo || !path)
67
75
  return null;
68
76
  return { owner, repo, path, ref };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cardelli/ambit",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Deploy apps to the cloud that only you and your AI agents can reach",
5
5
  "license": "MIT",
6
6
  "module": "./esm/src/providers/fly.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"_data.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.27/_data.js"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- /**
2
- * Filters the given array, removing all elements that do not match the given predicate
3
- * **in place. This means `array` will be modified!**.
4
- */
5
- export declare function filterInPlace<T>(array: Array<T>, predicate: (el: T) => boolean): Array<T>;
6
- //# sourceMappingURL=_utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_utils.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/collections/1.1.3/_utils.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,GAC5B,KAAK,CAAC,CAAC,CAAC,CAeV"}
@@ -1,18 +0,0 @@
1
- // Copyright 2018-2025 the Deno authors. MIT license.
2
- // This module is browser compatible.
3
- /**
4
- * Filters the given array, removing all elements that do not match the given predicate
5
- * **in place. This means `array` will be modified!**.
6
- */
7
- export function filterInPlace(array, predicate) {
8
- let outputIndex = 0;
9
- for (const cur of array) {
10
- if (!predicate(cur)) {
11
- continue;
12
- }
13
- array[outputIndex] = cur;
14
- outputIndex += 1;
15
- }
16
- array.splice(outputIndex);
17
- return array;
18
- }