run402 4.94.0 → 4.95.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 (131) hide show
  1. package/README.md +20 -20
  2. package/cli.mjs +7 -19
  3. package/gitvault-surface.json +2 -2
  4. package/lib/admin.mjs +5 -5
  5. package/lib/ai.mjs +5 -5
  6. package/lib/apps.mjs +9 -9
  7. package/lib/archives.mjs +371 -8
  8. package/lib/argparse.mjs +5 -5
  9. package/lib/assets.mjs +12 -12
  10. package/lib/auth.mjs +34 -34
  11. package/lib/branches.mjs +7 -7
  12. package/lib/buzz-doctor.mjs +1 -1
  13. package/lib/buzz-notifications.mjs +4 -4
  14. package/lib/buzz.mjs +2 -2
  15. package/lib/cache.mjs +1 -1
  16. package/lib/cdn.mjs +2 -2
  17. package/lib/ci.mjs +8 -8
  18. package/lib/claims.mjs +2 -2
  19. package/lib/command-manifest.mjs +35 -36
  20. package/lib/config.mjs +4 -4
  21. package/lib/contacts.mjs +3 -3
  22. package/lib/contracts.mjs +11 -11
  23. package/lib/credentials.mjs +31 -31
  24. package/lib/delegates.mjs +13 -13
  25. package/lib/deliveries.mjs +2 -2
  26. package/lib/deploy-v2.mjs +9 -9
  27. package/lib/dev.mjs +3 -3
  28. package/lib/doctor.mjs +6 -6
  29. package/lib/domains.mjs +27 -27
  30. package/lib/email.mjs +38 -38
  31. package/lib/errors.mjs +40 -24
  32. package/lib/escalations.mjs +4 -4
  33. package/lib/events.mjs +32 -25
  34. package/lib/feedback.mjs +2 -2
  35. package/lib/functions.mjs +34 -34
  36. package/lib/gitvault-scaffold.mjs +2 -2
  37. package/lib/gitvault.mjs +2 -2
  38. package/lib/grants.mjs +7 -7
  39. package/lib/image.mjs +7 -7
  40. package/lib/init.mjs +3 -3
  41. package/lib/jobs.mjs +15 -15
  42. package/lib/live.mjs +1 -1
  43. package/lib/logs.mjs +8 -8
  44. package/lib/messages.mjs +5 -5
  45. package/lib/next-actions.mjs +1 -1
  46. package/lib/org-context.mjs +13 -13
  47. package/lib/{org.mjs → orgs.mjs} +124 -163
  48. package/lib/projects.mjs +45 -56
  49. package/lib/repos.mjs +23 -23
  50. package/lib/rooms.mjs +2 -2
  51. package/lib/sdk-errors.mjs +1 -1
  52. package/lib/secrets.mjs +13 -13
  53. package/lib/sites.mjs +14 -14
  54. package/lib/snapshots.mjs +10 -10
  55. package/lib/subdomains.mjs +12 -12
  56. package/lib/subscriptions.mjs +2 -2
  57. package/lib/transfer.mjs +1 -1
  58. package/lib/up.mjs +7 -7
  59. package/lib/wallet-context.mjs +1 -1
  60. package/lib/wallets.mjs +1 -1
  61. package/lib/webhooks.mjs +8 -8
  62. package/lib/whoami.mjs +32 -5
  63. package/package.json +1 -1
  64. package/sdk/dist/actions.d.ts +3 -3
  65. package/sdk/dist/actions.d.ts.map +1 -1
  66. package/sdk/dist/app-up.d.ts +2 -2
  67. package/sdk/dist/app-up.d.ts.map +1 -1
  68. package/sdk/dist/config.d.ts +1 -2
  69. package/sdk/dist/config.d.ts.map +1 -1
  70. package/sdk/dist/config.js.map +1 -1
  71. package/sdk/dist/credentials.d.ts +1 -1
  72. package/sdk/dist/errors.d.ts +2 -2
  73. package/sdk/dist/errors.d.ts.map +1 -1
  74. package/sdk/dist/errors.js +1 -1
  75. package/sdk/dist/errors.js.map +1 -1
  76. package/sdk/dist/index.js +1 -1
  77. package/sdk/dist/index.js.map +1 -1
  78. package/sdk/dist/namespaces/admin.d.ts +1 -1
  79. package/sdk/dist/namespaces/admin.d.ts.map +1 -1
  80. package/sdk/dist/namespaces/ai.d.ts +1 -1
  81. package/sdk/dist/namespaces/ai.js +2 -2
  82. package/sdk/dist/namespaces/ai.js.map +1 -1
  83. package/sdk/dist/namespaces/assets.js +1 -1
  84. package/sdk/dist/namespaces/assets.js.map +1 -1
  85. package/sdk/dist/namespaces/ci.js +3 -3
  86. package/sdk/dist/namespaces/ci.js.map +1 -1
  87. package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
  88. package/sdk/dist/namespaces/deploy.js +26 -27
  89. package/sdk/dist/namespaces/deploy.js.map +1 -1
  90. package/sdk/dist/namespaces/deploy.types.d.ts +2 -2
  91. package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
  92. package/sdk/dist/namespaces/domains.d.ts +10 -2
  93. package/sdk/dist/namespaces/domains.d.ts.map +1 -1
  94. package/sdk/dist/namespaces/domains.js +10 -5
  95. package/sdk/dist/namespaces/domains.js.map +1 -1
  96. package/sdk/dist/namespaces/errors.js +1 -1
  97. package/sdk/dist/namespaces/functions.js +1 -1
  98. package/sdk/dist/namespaces/functions.js.map +1 -1
  99. package/sdk/dist/namespaces/gitvault.d.ts +2 -2
  100. package/sdk/dist/namespaces/gitvault.js +4 -4
  101. package/sdk/dist/namespaces/gitvault.js.map +1 -1
  102. package/sdk/dist/namespaces/tier.d.ts +1 -1
  103. package/sdk/dist/namespaces/transfers.d.ts +46 -15
  104. package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
  105. package/sdk/dist/namespaces/transfers.js.map +1 -1
  106. package/sdk/dist/node/actions-node.js +8 -8
  107. package/sdk/dist/node/actions-node.js.map +1 -1
  108. package/sdk/dist/node/assets-node.js +6 -6
  109. package/sdk/dist/node/assets-node.js.map +1 -1
  110. package/sdk/dist/node/ci.js +1 -1
  111. package/sdk/dist/node/ci.js.map +1 -1
  112. package/sdk/dist/node/credentials.d.ts +1 -1
  113. package/sdk/dist/node/credentials.js +1 -1
  114. package/sdk/dist/node/deploy-manifest.d.ts +3 -5
  115. package/sdk/dist/node/deploy-manifest.d.ts.map +1 -1
  116. package/sdk/dist/node/deploy-manifest.js +3 -12
  117. package/sdk/dist/node/deploy-manifest.js.map +1 -1
  118. package/sdk/dist/node/gitvault-apply.js +1 -1
  119. package/sdk/dist/node/gitvault-apply.js.map +1 -1
  120. package/sdk/dist/node/manifest-export.js +2 -2
  121. package/sdk/dist/node/manifest-export.js.map +1 -1
  122. package/sdk/dist/node/org-adopt.js +1 -1
  123. package/sdk/dist/node/org-adopt.js.map +1 -1
  124. package/sdk/dist/node/sites-node.js +1 -1
  125. package/sdk/dist/node/sites-node.js.map +1 -1
  126. package/sdk/dist/scoped.d.ts +8 -8
  127. package/sdk/dist/scoped.d.ts.map +1 -1
  128. package/sdk/dist/scoped.js +3 -3
  129. package/sdk/dist/scoped.js.map +1 -1
  130. package/lib/cloud.mjs +0 -256
  131. package/lib/core.mjs +0 -123
package/lib/core.mjs DELETED
@@ -1,123 +0,0 @@
1
- import { importArchiveToCore } from "#sdk/node";
2
- import { fail, reportSdkError } from "./sdk-errors.mjs";
3
- import { assertKnownFlags, flagValue, hasHelp, normalizeArgv, positionalArgs, failUnknownSubcommand } from "./argparse.mjs";
4
-
5
- const HELP = `run402 core — Local Run402 Core commands
6
-
7
- Usage:
8
- run402 core projects import <archive-path> --name <project-name> [options]
9
- run402 core projects apply <archive-path> --name <project-name> [options]
10
-
11
- Options:
12
- --name <name> New Core project name (default imported-project)
13
- --env-file <path> Env file satisfying required archive secrets.
14
- --secret KEY=VALUE Inline secret value; repeatable. Overrides --env-file.
15
- --core-url <url> Core gateway URL (default RUN402_CORE_URL or http://127.0.0.1:4020)
16
- --dry-run Verify and plan without creating a Core project.
17
- --require-runnable Block import unless required secrets are supplied.
18
- --json Emit final JSON.
19
- --json-stream Emit NDJSON progress events and final result event.
20
- `;
21
-
22
- const FLAG_VALUES = ["--name", "--env-file", "--secret", "--core-url"];
23
- const FLAGS = new Set([...FLAG_VALUES, "--dry-run", "--require-runnable", "--json", "--json-stream", "--help", "-h"]);
24
-
25
- export async function run(sub, args = []) {
26
- const all = [sub, ...args].filter(Boolean);
27
- if (hasHelp(all)) {
28
- console.log(HELP);
29
- return;
30
- }
31
- if (sub !== "projects") {
32
- failUnknownSubcommand("core", sub);
33
- }
34
- const action = args[0];
35
- if (action === "import" || action === "apply") return importProject(args.slice(1));
36
- failUnknownSubcommand("core projects", action, { extraSubcommands: ["apply"] });
37
- }
38
-
39
- async function importProject(rawArgs) {
40
- const args = normalizeArgv(rawArgs);
41
- assertKnownFlags(args, [...FLAGS], FLAG_VALUES);
42
- const archivePath = positionalArgs(args, FLAG_VALUES)[0];
43
- if (!archivePath) {
44
- fail({ code: "BAD_USAGE", message: "Usage: run402 core projects import <archive-path> --name <project-name> [options]" });
45
- }
46
- const jsonStream = args.includes("--json-stream");
47
- const secretValues = parseSecrets(args);
48
- const name = flagValue(args, "--name") ?? "imported-project";
49
- const coreUrl = flagValue(args, "--core-url") ?? undefined;
50
- const startedEvent = {
51
- event: "core_archive_import_started",
52
- stage: "verify",
53
- resource_type: "project_archive",
54
- resource_id: archivePath,
55
- status: "running",
56
- completed_units: 0,
57
- total_units: 1,
58
- code: null,
59
- message: "Verifying archive locally before Core import.",
60
- next_action: { type: "none" },
61
- retryable: false,
62
- context: { archive_path: archivePath, core_url: coreUrl ?? null, project_name: name },
63
- };
64
- if (jsonStream) console.log(JSON.stringify(startedEvent));
65
- try {
66
- const result = await importArchiveToCore({
67
- archivePath,
68
- name,
69
- coreUrl,
70
- envFile: flagValue(args, "--env-file") ?? undefined,
71
- secretValues,
72
- dryRun: args.includes("--dry-run"),
73
- requireRunnable: args.includes("--require-runnable"),
74
- });
75
- if (jsonStream) {
76
- console.log(JSON.stringify({
77
- event: "core_archive_import_complete",
78
- stage: "complete",
79
- resource_type: "project_archive",
80
- resource_id: archivePath,
81
- status: result.status,
82
- completed_units: result.status === "imported" || result.status === "dry_run" ? 1 : 0,
83
- total_units: 1,
84
- code: firstDiagnosticCode(result),
85
- message: `Core archive import status: ${result.status}`,
86
- next_action: result.next_action,
87
- retryable: result.status === "failed" && result.diagnostics.some((d) => d.retryable),
88
- result,
89
- }));
90
- } else {
91
- console.log(JSON.stringify({ ok: result.status === "imported" || result.status === "dry_run", import: result }, null, 2));
92
- }
93
- if (result.status !== "imported" && result.status !== "dry_run") process.exit(1);
94
- } catch (err) {
95
- reportSdkError(err);
96
- }
97
- }
98
-
99
- function parseSecrets(args) {
100
- const out = {};
101
- for (let i = 0; i < args.length; i += 1) {
102
- if (args[i] !== "--secret") continue;
103
- const value = args[i + 1];
104
- if (!value || value.startsWith("--")) {
105
- fail({ code: "BAD_FLAG", message: "--secret requires KEY=VALUE" });
106
- }
107
- const eq = value.indexOf("=");
108
- if (eq <= 0) {
109
- fail({ code: "BAD_FLAG", message: "--secret requires KEY=VALUE", details: { value } });
110
- }
111
- const key = value.slice(0, eq);
112
- if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
113
- fail({ code: "BAD_FLAG", message: `Invalid secret env var name: ${key}` });
114
- }
115
- out[key] = value.slice(eq + 1);
116
- i += 1;
117
- }
118
- return out;
119
- }
120
-
121
- function firstDiagnosticCode(result) {
122
- return result.diagnostics.find((d) => d.severity === "blocking")?.code ?? null;
123
- }