automate.ax 0.1.3

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 (162) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/automation/actions.d.ts +200 -0
  4. package/dist/automation/actions.d.ts.map +1 -0
  5. package/dist/automation/actions.js +286 -0
  6. package/dist/automation/automation.d.ts +16 -0
  7. package/dist/automation/automation.d.ts.map +1 -0
  8. package/dist/automation/automation.js +10 -0
  9. package/dist/automation/integrations.d.ts +63 -0
  10. package/dist/automation/integrations.d.ts.map +1 -0
  11. package/dist/automation/integrations.js +58 -0
  12. package/dist/automation/runtime.d.ts +73 -0
  13. package/dist/automation/runtime.d.ts.map +1 -0
  14. package/dist/automation/runtime.js +92 -0
  15. package/dist/automation/signal.d.ts +58 -0
  16. package/dist/automation/signal.d.ts.map +1 -0
  17. package/dist/automation/signal.js +80 -0
  18. package/dist/automation/subscribe.d.ts +10 -0
  19. package/dist/automation/subscribe.d.ts.map +1 -0
  20. package/dist/automation/subscribe.js +16 -0
  21. package/dist/cli/command-names.d.ts +46 -0
  22. package/dist/cli/command-names.d.ts.map +1 -0
  23. package/dist/cli/command-names.js +46 -0
  24. package/dist/cli/commands/accept.d.ts +20 -0
  25. package/dist/cli/commands/accept.d.ts.map +1 -0
  26. package/dist/cli/commands/accept.js +42 -0
  27. package/dist/cli/commands/debug.d.ts +4 -0
  28. package/dist/cli/commands/debug.d.ts.map +1 -0
  29. package/dist/cli/commands/debug.js +52 -0
  30. package/dist/cli/commands/deploy.d.ts +24 -0
  31. package/dist/cli/commands/deploy.d.ts.map +1 -0
  32. package/dist/cli/commands/deploy.js +292 -0
  33. package/dist/cli/commands/login.d.ts +20 -0
  34. package/dist/cli/commands/login.d.ts.map +1 -0
  35. package/dist/cli/commands/login.js +145 -0
  36. package/dist/cli/commands/logout.d.ts +4 -0
  37. package/dist/cli/commands/logout.d.ts.map +1 -0
  38. package/dist/cli/commands/logout.js +32 -0
  39. package/dist/cli/commands/me.d.ts +4 -0
  40. package/dist/cli/commands/me.d.ts.map +1 -0
  41. package/dist/cli/commands/me.js +48 -0
  42. package/dist/cli/commands/org-api-key-create.d.ts +26 -0
  43. package/dist/cli/commands/org-api-key-create.d.ts.map +1 -0
  44. package/dist/cli/commands/org-api-key-create.js +51 -0
  45. package/dist/cli/commands/org-api-key-delete.d.ts +33 -0
  46. package/dist/cli/commands/org-api-key-delete.d.ts.map +1 -0
  47. package/dist/cli/commands/org-api-key-delete.js +57 -0
  48. package/dist/cli/commands/org-api-key-list.d.ts +16 -0
  49. package/dist/cli/commands/org-api-key-list.d.ts.map +1 -0
  50. package/dist/cli/commands/org-api-key-list.js +58 -0
  51. package/dist/cli/commands/org-api-key-rename.d.ts +32 -0
  52. package/dist/cli/commands/org-api-key-rename.d.ts.map +1 -0
  53. package/dist/cli/commands/org-api-key-rename.js +54 -0
  54. package/dist/cli/commands/org-api-key.d.ts +2 -0
  55. package/dist/cli/commands/org-api-key.d.ts.map +1 -0
  56. package/dist/cli/commands/org-api-key.js +18 -0
  57. package/dist/cli/commands/org-billing.d.ts +16 -0
  58. package/dist/cli/commands/org-billing.d.ts.map +1 -0
  59. package/dist/cli/commands/org-billing.js +78 -0
  60. package/dist/cli/commands/org-create.d.ts +20 -0
  61. package/dist/cli/commands/org-create.d.ts.map +1 -0
  62. package/dist/cli/commands/org-create.js +64 -0
  63. package/dist/cli/commands/org-delete.d.ts +27 -0
  64. package/dist/cli/commands/org-delete.d.ts.map +1 -0
  65. package/dist/cli/commands/org-delete.js +53 -0
  66. package/dist/cli/commands/org-invite.d.ts +39 -0
  67. package/dist/cli/commands/org-invite.d.ts.map +1 -0
  68. package/dist/cli/commands/org-invite.js +66 -0
  69. package/dist/cli/commands/org-leave.d.ts +27 -0
  70. package/dist/cli/commands/org-leave.d.ts.map +1 -0
  71. package/dist/cli/commands/org-leave.js +56 -0
  72. package/dist/cli/commands/org-list.d.ts +4 -0
  73. package/dist/cli/commands/org-list.d.ts.map +1 -0
  74. package/dist/cli/commands/org-list.js +36 -0
  75. package/dist/cli/commands/org-remove.d.ts +33 -0
  76. package/dist/cli/commands/org-remove.d.ts.map +1 -0
  77. package/dist/cli/commands/org-remove.js +66 -0
  78. package/dist/cli/commands/org-rename.d.ts +26 -0
  79. package/dist/cli/commands/org-rename.d.ts.map +1 -0
  80. package/dist/cli/commands/org-rename.js +58 -0
  81. package/dist/cli/commands/org-show.d.ts +16 -0
  82. package/dist/cli/commands/org-show.d.ts.map +1 -0
  83. package/dist/cli/commands/org-show.js +48 -0
  84. package/dist/cli/commands/org-upgrade.d.ts +42 -0
  85. package/dist/cli/commands/org-upgrade.d.ts.map +1 -0
  86. package/dist/cli/commands/org-upgrade.js +171 -0
  87. package/dist/cli/commands/org.d.ts +2 -0
  88. package/dist/cli/commands/org.d.ts.map +1 -0
  89. package/dist/cli/commands/org.js +32 -0
  90. package/dist/cli/commands/project-create.d.ts +27 -0
  91. package/dist/cli/commands/project-create.d.ts.map +1 -0
  92. package/dist/cli/commands/project-create.js +61 -0
  93. package/dist/cli/commands/project-delete.d.ts +27 -0
  94. package/dist/cli/commands/project-delete.d.ts.map +1 -0
  95. package/dist/cli/commands/project-delete.js +55 -0
  96. package/dist/cli/commands/project-list.d.ts +17 -0
  97. package/dist/cli/commands/project-list.d.ts.map +1 -0
  98. package/dist/cli/commands/project-list.js +89 -0
  99. package/dist/cli/commands/project-rename.d.ts +26 -0
  100. package/dist/cli/commands/project-rename.d.ts.map +1 -0
  101. package/dist/cli/commands/project-rename.js +60 -0
  102. package/dist/cli/commands/project-show.d.ts +16 -0
  103. package/dist/cli/commands/project-show.d.ts.map +1 -0
  104. package/dist/cli/commands/project-show.js +37 -0
  105. package/dist/cli/commands/project.d.ts +2 -0
  106. package/dist/cli/commands/project.d.ts.map +1 -0
  107. package/dist/cli/commands/project.js +20 -0
  108. package/dist/cli/index.d.ts +19 -0
  109. package/dist/cli/index.d.ts.map +1 -0
  110. package/dist/cli/index.js +63 -0
  111. package/dist/cli/lib/api-client.d.ts +3 -0
  112. package/dist/cli/lib/api-client.d.ts.map +1 -0
  113. package/dist/cli/lib/api-client.js +14 -0
  114. package/dist/cli/lib/auth-client.d.ts +80 -0
  115. package/dist/cli/lib/auth-client.d.ts.map +1 -0
  116. package/dist/cli/lib/auth-client.js +61 -0
  117. package/dist/cli/lib/automation-build.d.ts +30 -0
  118. package/dist/cli/lib/automation-build.d.ts.map +1 -0
  119. package/dist/cli/lib/automation-build.js +90 -0
  120. package/dist/cli/lib/config-dir.d.ts +47 -0
  121. package/dist/cli/lib/config-dir.d.ts.map +1 -0
  122. package/dist/cli/lib/config-dir.js +146 -0
  123. package/dist/cli/lib/detail-block.d.ts +16 -0
  124. package/dist/cli/lib/detail-block.d.ts.map +1 -0
  125. package/dist/cli/lib/detail-block.js +25 -0
  126. package/dist/cli/lib/env.d.ts +4 -0
  127. package/dist/cli/lib/env.d.ts.map +1 -0
  128. package/dist/cli/lib/env.js +7 -0
  129. package/dist/cli/lib/hijack-clack-logger.d.ts +2 -0
  130. package/dist/cli/lib/hijack-clack-logger.d.ts.map +1 -0
  131. package/dist/cli/lib/hijack-clack-logger.js +8 -0
  132. package/dist/cli/lib/io.d.ts +19 -0
  133. package/dist/cli/lib/io.d.ts.map +1 -0
  134. package/dist/cli/lib/io.js +87 -0
  135. package/dist/cli/lib/json-output.d.ts +9 -0
  136. package/dist/cli/lib/json-output.d.ts.map +1 -0
  137. package/dist/cli/lib/json-output.js +12 -0
  138. package/dist/cli/lib/organization-detail-block.d.ts +30 -0
  139. package/dist/cli/lib/organization-detail-block.d.ts.map +1 -0
  140. package/dist/cli/lib/organization-detail-block.js +72 -0
  141. package/dist/cli/lib/project-config.d.ts +10 -0
  142. package/dist/cli/lib/project-config.d.ts.map +1 -0
  143. package/dist/cli/lib/project-config.js +21 -0
  144. package/dist/cli/lib/spinner.d.ts +18 -0
  145. package/dist/cli/lib/spinner.d.ts.map +1 -0
  146. package/dist/cli/lib/spinner.js +111 -0
  147. package/dist/cli/usage.d.ts +9 -0
  148. package/dist/cli/usage.d.ts.map +1 -0
  149. package/dist/cli/usage.js +468 -0
  150. package/dist/cli/utils.d.ts +291 -0
  151. package/dist/cli/utils.d.ts.map +1 -0
  152. package/dist/cli/utils.js +561 -0
  153. package/dist/cli.d.ts +3 -0
  154. package/dist/cli.d.ts.map +1 -0
  155. package/dist/cli.js +5 -0
  156. package/dist/config.d.ts +11 -0
  157. package/dist/config.d.ts.map +1 -0
  158. package/dist/config.js +9 -0
  159. package/dist/index.d.ts +8 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +7 -0
  162. package/package.json +92 -0
@@ -0,0 +1,63 @@
1
+ export type IntegrationScopeRequirement = ScopeRequirementGroup | string;
2
+ /** A recursive group of integration scope requirements. */
3
+ export interface ScopeRequirementGroup {
4
+ requirements: IntegrationScopeRequirement[];
5
+ type: "and" | "or";
6
+ }
7
+ /** Combinators for declaring recursive integration scope requirements. */
8
+ export declare const scope: {
9
+ /**
10
+ * Requires every scope or nested group.
11
+ *
12
+ * @param requirements - Required scopes and nested groups.
13
+ */
14
+ all(...requirements: IntegrationScopeRequirement[]): ScopeRequirementGroup;
15
+ /**
16
+ * Requires any scope or nested group.
17
+ *
18
+ * Alternatives must be ordered from most permissive to least permissive.
19
+ *
20
+ * @param requirements - Alternative scopes and nested groups.
21
+ */
22
+ any(...requirements: IntegrationScopeRequirement[]): ScopeRequirementGroup;
23
+ };
24
+ export declare const actionAccountRequirementDefinition: unique symbol;
25
+ export declare const integrationAccountDefinition: unique symbol;
26
+ export declare const DEFAULT_ACCOUNT_BINDING = "default";
27
+ export declare const serializedIntegrationAccountDefinition = "$integrationAccount";
28
+ /** An action whose account requirement can contribute authorization scopes. */
29
+ export interface AccountAuthorizationAction<TServiceId extends string> {
30
+ readonly [actionAccountRequirementDefinition]: {
31
+ requiredScopes: IntegrationScopeRequirement[];
32
+ serviceId: TServiceId;
33
+ };
34
+ }
35
+ export type AccountAuthorizationHint<TServiceId extends string> = AccountAuthorizationAction<TServiceId> | IntegrationScopeRequirement;
36
+ /** An opaque reference to a stable project account binding. */
37
+ export interface IntegrationAccountReference<TServiceId extends string = string> {
38
+ readonly [serializedIntegrationAccountDefinition]: {
39
+ binding: string;
40
+ serviceId: TServiceId;
41
+ };
42
+ readonly [integrationAccountDefinition]: {
43
+ binding: string;
44
+ serviceId: TServiceId;
45
+ };
46
+ }
47
+ export interface ResolvedIntegrationAccount<TServiceId extends string = string> {
48
+ secret: Record<string, unknown>;
49
+ serviceId: TServiceId;
50
+ }
51
+ /**
52
+ * Defines the account declaration function for one integration service.
53
+ *
54
+ * @param serviceId - Stable integration service identifier.
55
+ */
56
+ export declare function defineAccount<const TServiceId extends string>(serviceId: TServiceId): (binding: string, authorizationHints?: AccountAuthorizationHint<TServiceId>[]) => IntegrationAccountReference<TServiceId>;
57
+ /**
58
+ * Determines whether a runtime value is an integration account reference.
59
+ *
60
+ * @param value - Materialized action input value to inspect.
61
+ */
62
+ export declare function isIntegrationAccountReference(value: unknown): value is IntegrationAccountReference;
63
+ //# sourceMappingURL=integrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/automation/integrations.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,2BAA2B,GAAG,qBAAqB,GAAG,MAAM,CAAA;AAExE,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,2BAA2B,EAAE,CAAA;IAC3C,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;CACnB;AAED,0EAA0E;AAC1E,eAAO,MAAM,KAAK;IAChB;;;;OAIG;yBACkB,2BAA2B,EAAE,GAAG,qBAAqB;IAI1E;;;;;;OAMG;yBACkB,2BAA2B,EAAE,GAAG,qBAAqB;CAG3E,CAAA;AAED,eAAO,MAAM,kCAAkC,EAAE,OAAO,MAEvD,CAAA;AACD,eAAO,MAAM,4BAA4B,EAAE,OAAO,MAEjD,CAAA;AACD,eAAO,MAAM,uBAAuB,YAAY,CAAA;AAChD,eAAO,MAAM,sCAAsC,wBAAwB,CAAA;AAE3E,+EAA+E;AAC/E,MAAM,WAAW,0BAA0B,CAAC,UAAU,SAAS,MAAM;IACnE,QAAQ,CAAC,CAAC,kCAAkC,CAAC,EAAE;QAC7C,cAAc,EAAE,2BAA2B,EAAE,CAAA;QAC7C,SAAS,EAAE,UAAU,CAAA;KACtB,CAAA;CACF;AAED,MAAM,MAAM,wBAAwB,CAAC,UAAU,SAAS,MAAM,IAC1D,0BAA0B,CAAC,UAAU,CAAC,GACtC,2BAA2B,CAAA;AAE/B,+DAA+D;AAC/D,MAAM,WAAW,2BAA2B,CAC1C,UAAU,SAAS,MAAM,GAAG,MAAM;IAElC,QAAQ,CAAC,CAAC,sCAAsC,CAAC,EAAE;QACjD,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,UAAU,CAAA;KACtB,CAAA;IACD,QAAQ,CAAC,CAAC,4BAA4B,CAAC,EAAE;QACvC,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,UAAU,CAAA;KACtB,CAAA;CACF;AAED,MAAM,WAAW,0BAA0B,CACzC,UAAU,SAAS,MAAM,GAAG,MAAM;IAElC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,SAAS,EAAE,UAAU,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,EAC3D,SAAS,EAAE,UAAU,IAGnB,SAAS,MAAM,EACf,qBAAqB,wBAAwB,CAAC,UAAU,CAAC,EAAE,KAC1D,2BAA2B,CAAC,UAAU,CAAC,CAmB3C;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,2BAA2B,CAMtC"}
@@ -0,0 +1,58 @@
1
+ /** Combinators for declaring recursive integration scope requirements. */
2
+ export const scope = {
3
+ /**
4
+ * Requires every scope or nested group.
5
+ *
6
+ * @param requirements - Required scopes and nested groups.
7
+ */
8
+ all(...requirements) {
9
+ return { requirements: [...new Set(requirements)], type: "and" };
10
+ },
11
+ /**
12
+ * Requires any scope or nested group.
13
+ *
14
+ * Alternatives must be ordered from most permissive to least permissive.
15
+ *
16
+ * @param requirements - Alternative scopes and nested groups.
17
+ */
18
+ any(...requirements) {
19
+ return { requirements: [...new Set(requirements)], type: "or" };
20
+ },
21
+ };
22
+ export const actionAccountRequirementDefinition = Symbol("automation.actionAccountRequirementDefinition");
23
+ export const integrationAccountDefinition = Symbol("automation.integrationAccountDefinition");
24
+ export const DEFAULT_ACCOUNT_BINDING = "default";
25
+ export const serializedIntegrationAccountDefinition = "$integrationAccount";
26
+ /**
27
+ * Defines the account declaration function for one integration service.
28
+ *
29
+ * @param serviceId - Stable integration service identifier.
30
+ */
31
+ export function defineAccount(serviceId) {
32
+ return (binding, authorizationHints) => {
33
+ globalThis.__AUTOMATION_PLANNING_CONTEXT__?.accountDeclarations.push({
34
+ binding,
35
+ ...(authorizationHints && {
36
+ requiredScopes: authorizationHints.flatMap((hint) => typeof hint === "string" || "type" in hint
37
+ ? [hint]
38
+ : hint[actionAccountRequirementDefinition].requiredScopes),
39
+ }),
40
+ serviceId,
41
+ });
42
+ const definition = { binding, serviceId };
43
+ return {
44
+ [integrationAccountDefinition]: definition,
45
+ [serializedIntegrationAccountDefinition]: definition,
46
+ };
47
+ };
48
+ }
49
+ /**
50
+ * Determines whether a runtime value is an integration account reference.
51
+ *
52
+ * @param value - Materialized action input value to inspect.
53
+ */
54
+ export function isIntegrationAccountReference(value) {
55
+ return (typeof value === "object" &&
56
+ value !== null &&
57
+ serializedIntegrationAccountDefinition in value);
58
+ }
@@ -0,0 +1,73 @@
1
+ import { type Client } from "@automate.ax/client";
2
+ import type { ActionRuntime } from "./actions.js";
3
+ import type { IntegrationScopeRequirement } from "./integrations.js";
4
+ interface RuntimeContext {
5
+ apiOrigin: string;
6
+ phase: "execute" | "orchestrate";
7
+ token: string;
8
+ }
9
+ export type RuntimeBatchContext = Awaited<ReturnType<Client["runtime"]["nextBatch"]>>["context"];
10
+ interface OrchestrationRuntimeState {
11
+ actionInvocations: {
12
+ actionDependencyIds: string[];
13
+ description: string | null;
14
+ eventDependencyIds: string[];
15
+ name: string;
16
+ slot: number;
17
+ }[];
18
+ context: RuntimeBatchContext;
19
+ nextHookSlot: number;
20
+ phase: "orchestrate";
21
+ }
22
+ interface ExecutionRuntimeState {
23
+ completeInvocation: Client["runtime"]["completeInvocation"];
24
+ effects: Promise<void>[];
25
+ executed: boolean;
26
+ invocation: Awaited<ReturnType<Client["runtime"]["loadInvocation"]>>;
27
+ nextHookSlot: number;
28
+ phase: "execute";
29
+ resolveAccountInput: Client["runtime"]["resolveAccountInput"];
30
+ runtime: ActionRuntime;
31
+ }
32
+ export type RuntimeValueContext = ExecutionRuntimeState["invocation"]["context"];
33
+ declare global {
34
+ var __AUTOMATION_PLANNING_CONTEXT__: {
35
+ accountDeclarations: {
36
+ binding: string;
37
+ requiredScopes?: IntegrationScopeRequirement[];
38
+ serviceId: string;
39
+ }[];
40
+ accountUses: ({
41
+ binding: string;
42
+ dynamic: false;
43
+ requiredScopes: IntegrationScopeRequirement[];
44
+ serviceId: string;
45
+ } | {
46
+ dynamic: true;
47
+ requiredScopes: IntegrationScopeRequirement[];
48
+ serviceId: string;
49
+ })[];
50
+ nextHookSlot: number;
51
+ subscriptions: {
52
+ config: unknown;
53
+ eventType: string;
54
+ hookSlot: number;
55
+ }[];
56
+ } | undefined;
57
+ var __AUTOMATION_RUNTIME_CONTEXT__: RuntimeContext | undefined;
58
+ var __AUTOMATION_RUNTIME_STATE__: ExecutionRuntimeState | OrchestrationRuntimeState | undefined;
59
+ }
60
+ /**
61
+ * Runs an automation body in local, orchestration, or execution mode.
62
+ *
63
+ * @param fn - Automation body whose hook calls should be evaluated.
64
+ * @throws When execution has no action matching the requested hook slot.
65
+ */
66
+ export declare function runAutomationFunction(fn: () => void): Promise<void>;
67
+ /**
68
+ * Reserves the next deterministic hook slot in the active planning or runtime
69
+ * context.
70
+ */
71
+ export declare function consumeHookSlot(): number;
72
+ export {};
73
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/automation/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAiB;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,0BAAsB;AAEjE,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,SAAS,GAAG,aAAa,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAC3C,CAAC,SAAS,CAAC,CAAA;AAEZ,UAAU,yBAAyB;IACjC,iBAAiB,EAAE;QACjB,mBAAmB,EAAE,MAAM,EAAE,CAAA;QAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAA;QAC5B,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,EAAE,CAAA;IACH,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED,UAAU,qBAAqB;IAC7B,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAA;IAC3D,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACpE,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAA;IAC7D,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAA;AAEhF,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,+BAA+B,EAC/B;QACE,mBAAmB,EAAE;YACnB,OAAO,EAAE,MAAM,CAAA;YACf,cAAc,CAAC,EAAE,2BAA2B,EAAE,CAAA;YAC9C,SAAS,EAAE,MAAM,CAAA;SAClB,EAAE,CAAA;QACH,WAAW,EAAE,CACT;YACE,OAAO,EAAE,MAAM,CAAA;YACf,OAAO,EAAE,KAAK,CAAA;YACd,cAAc,EAAE,2BAA2B,EAAE,CAAA;YAC7C,SAAS,EAAE,MAAM,CAAA;SAClB,GACD;YACE,OAAO,EAAE,IAAI,CAAA;YACb,cAAc,EAAE,2BAA2B,EAAE,CAAA;YAC7C,SAAS,EAAE,MAAM,CAAA;SAClB,CACJ,EAAE,CAAA;QACH,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE;YACb,MAAM,EAAE,OAAO,CAAA;YACf,SAAS,EAAE,MAAM,CAAA;YACjB,QAAQ,EAAE,MAAM,CAAA;SACjB,EAAE,CAAA;KACJ,GACD,SAAS,CAAA;IACb,IAAI,8BAA8B,EAAE,cAAc,GAAG,SAAS,CAAA;IAC9D,IAAI,4BAA4B,EAC5B,qBAAqB,GACrB,yBAAyB,GACzB,SAAS,CAAA;CACd;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,IAAI,iBA4DzD;AAED;;;GAGG;AACH,wBAAgB,eAAe,WAY9B"}
@@ -0,0 +1,92 @@
1
+ import { createClient } from "@automate.ax/client";
2
+ import { joinURL } from "ufo";
3
+ /**
4
+ * Runs an automation body in local, orchestration, or execution mode.
5
+ *
6
+ * @param fn - Automation body whose hook calls should be evaluated.
7
+ * @throws When execution has no action matching the requested hook slot.
8
+ */
9
+ export async function runAutomationFunction(fn) {
10
+ const runtimeContext = globalThis.__AUTOMATION_RUNTIME_CONTEXT__;
11
+ if (!runtimeContext) {
12
+ fn();
13
+ return;
14
+ }
15
+ if (runtimeContext.phase === "orchestrate") {
16
+ const client = createRuntimeClient(runtimeContext);
17
+ const state = {
18
+ actionInvocations: [],
19
+ context: (await client.runtime.nextBatch()).context,
20
+ nextHookSlot: 0,
21
+ phase: "orchestrate",
22
+ };
23
+ globalThis.__AUTOMATION_RUNTIME_STATE__ = state;
24
+ try {
25
+ fn();
26
+ await client.runtime.commit({
27
+ actionInvocations: state.actionInvocations,
28
+ });
29
+ }
30
+ finally {
31
+ globalThis.__AUTOMATION_RUNTIME_STATE__ = undefined;
32
+ }
33
+ return;
34
+ }
35
+ const client = createRuntimeClient(runtimeContext);
36
+ let nextOutputIndex = 0;
37
+ const state = {
38
+ completeInvocation: client.runtime.completeInvocation,
39
+ effects: [],
40
+ executed: false,
41
+ invocation: await client.runtime.loadInvocation(),
42
+ nextHookSlot: 0,
43
+ phase: "execute",
44
+ resolveAccountInput: client.runtime.resolveAccountInput,
45
+ runtime: {
46
+ sendOutput: async (output) => {
47
+ await client.runtime.sendOutput({
48
+ output,
49
+ outputIndex: nextOutputIndex++,
50
+ });
51
+ },
52
+ sendEmail: async (input) => await client.runtime.sendEmail(input),
53
+ },
54
+ };
55
+ globalThis.__AUTOMATION_RUNTIME_STATE__ = state;
56
+ try {
57
+ fn();
58
+ await Promise.all(state.effects);
59
+ if (!state.executed) {
60
+ throw new Error(`No action matched slot ${state.invocation.slot}.`);
61
+ }
62
+ }
63
+ finally {
64
+ globalThis.__AUTOMATION_RUNTIME_STATE__ = undefined;
65
+ }
66
+ }
67
+ /**
68
+ * Reserves the next deterministic hook slot in the active planning or runtime
69
+ * context.
70
+ */
71
+ export function consumeHookSlot() {
72
+ const runtimeState = globalThis.__AUTOMATION_RUNTIME_STATE__;
73
+ if (runtimeState) {
74
+ return runtimeState.nextHookSlot++;
75
+ }
76
+ const planningContext = globalThis.__AUTOMATION_PLANNING_CONTEXT__;
77
+ if (planningContext) {
78
+ return planningContext.nextHookSlot++;
79
+ }
80
+ return -1;
81
+ }
82
+ /**
83
+ * Creates an authenticated API client for an automation runtime.
84
+ *
85
+ * @param context - Runtime connection details supplied by the sandbox.
86
+ */
87
+ function createRuntimeClient(context) {
88
+ return createClient({
89
+ apiKey: context.token,
90
+ url: joinURL(context.apiOrigin, "/api/rpc"),
91
+ });
92
+ }
@@ -0,0 +1,58 @@
1
+ export declare const actionProvenance: unique symbol;
2
+ export declare const signalTransform: unique symbol;
3
+ export declare const subscriptionProvenance: unique symbol;
4
+ export declare const signalValueType: unique symbol;
5
+ /** Maps an object payload's properties to child signals. */
6
+ type SignalProperties<T> = {
7
+ readonly [TKey in keyof NonNullable<T> as TKey extends keyof SignalProtocol<T> ? never : TKey extends string | number ? TKey : never]-?: Signal<NonNullable<T>[TKey]>;
8
+ };
9
+ type SignalProtocol<T> = {
10
+ readonly [actionProvenance]?: {
11
+ slot: number;
12
+ };
13
+ readonly [signalTransform]?: {
14
+ inputs: ReadonlyArray<Signal>;
15
+ transform: SignalTransform;
16
+ };
17
+ readonly [subscriptionProvenance]?: {
18
+ slot: number;
19
+ };
20
+ readonly [signalValueType]: () => T;
21
+ transform<TMapped>(transformer: (value: T) => TMapped): Signal<TMapped>;
22
+ };
23
+ export type Signal<T = unknown> = SignalProtocol<T> & SignalProperties<T>;
24
+ export type SignalTransform = {
25
+ transform(...inputs: unknown[]): unknown;
26
+ }["transform"];
27
+ /**
28
+ * Determines whether a value implements the internal signal protocol.
29
+ *
30
+ * @param value - Value to inspect.
31
+ */
32
+ export declare function isSignal(value: unknown): value is Signal;
33
+ /**
34
+ * Creates a signal for an action output at a deterministic hook slot.
35
+ *
36
+ * @param slot - Hook slot assigned to the action invocation.
37
+ */
38
+ export declare function createActionSignal<T>(slot: number): Signal<T>;
39
+ /**
40
+ * Creates a signal for a subscription event at a deterministic hook slot.
41
+ *
42
+ * @param slot - Hook slot assigned to the subscription.
43
+ */
44
+ export declare function createSubscriptionSignal<T>(slot: number): Signal<T>;
45
+ /**
46
+ * Creates a derived signal from explicit graph inputs and a pure transformer.
47
+ *
48
+ * Dependency collection traverses the inputs without invoking the transformer.
49
+ * The transformer runs only after the executor materializes every input.
50
+ *
51
+ * @param inputs - Signals consumed by the transformer.
52
+ * @param transformer - Pure function that computes the derived value.
53
+ */
54
+ export declare function transform<const TValues extends readonly unknown[], TOutput>(inputs: {
55
+ readonly [TIndex in keyof TValues]: Signal<TValues[TIndex]>;
56
+ }, transformer: (...inputs: TValues) => TOutput): Signal<TOutput>;
57
+ export {};
58
+ //# sourceMappingURL=signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/automation/signal.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAErC,CAAA;AACD,eAAO,MAAM,eAAe,EAAE,OAAO,MAEpC,CAAA;AACD,eAAO,MAAM,sBAAsB,EAAE,OAAO,MAE3C,CAAA;AACD,eAAO,MAAM,eAAe,EAAE,OAAO,MAEpC,CAAA;AAED,4DAA4D;AAC5D,KAAK,gBAAgB,CAAC,CAAC,IAAI;IACzB,QAAQ,EAAE,IAAI,IAAI,MAAM,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,MAAM,cAAc,CAAC,CAAC,CAAC,GAC1E,KAAK,GACL,IAAI,SAAS,MAAM,GAAG,MAAM,GAC1B,IAAI,GACJ,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAA;AAED,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE;QAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;QAC7B,SAAS,EAAE,eAAe,CAAA;KAC3B,CAAA;IACD,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE;QAClC,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAA;IACnC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;CACxE,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAEzE,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;CACzC,CAAC,WAAW,CAAC,CAAA;AAEd;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAOxD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAInE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,OAAO,EAAE,EAAE,OAAO,EACzE,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D,EACD,WAAW,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,KAAK,OAAO,GAC3C,MAAM,CAAC,OAAO,CAAC,CAAA"}
@@ -0,0 +1,80 @@
1
+ export const actionProvenance = Symbol("automation.actionProvenance");
2
+ export const signalTransform = Symbol("automation.signalTransform");
3
+ export const subscriptionProvenance = Symbol("automation.subscriptionProvenance");
4
+ export const signalValueType = Symbol("automation.signalValueType");
5
+ /**
6
+ * Determines whether a value implements the internal signal protocol.
7
+ *
8
+ * @param value - Value to inspect.
9
+ */
10
+ export function isSignal(value) {
11
+ return (typeof value === "object" &&
12
+ value !== null &&
13
+ signalValueType in value &&
14
+ typeof value[signalValueType] === "function");
15
+ }
16
+ /**
17
+ * Creates a signal for an action output at a deterministic hook slot.
18
+ *
19
+ * @param slot - Hook slot assigned to the action invocation.
20
+ */
21
+ export function createActionSignal(slot) {
22
+ return Object.assign(createSignalProxy(), {
23
+ [actionProvenance]: { slot },
24
+ });
25
+ }
26
+ /**
27
+ * Creates a signal for a subscription event at a deterministic hook slot.
28
+ *
29
+ * @param slot - Hook slot assigned to the subscription.
30
+ */
31
+ export function createSubscriptionSignal(slot) {
32
+ return Object.assign(createSignalProxy(), {
33
+ [subscriptionProvenance]: { slot },
34
+ });
35
+ }
36
+ export function transform(inputs, transformer) {
37
+ return createTransformSignal(inputs, transformer);
38
+ }
39
+ /** Creates the proxy that implements behavior shared by every signal. */
40
+ function createSignalProxy() {
41
+ const target = {
42
+ [signalValueType]: () => {
43
+ throw new Error("Signal type markers cannot be called.");
44
+ },
45
+ transform(transformer) {
46
+ return transform([signal], transformer);
47
+ },
48
+ };
49
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Proxy traps provide the mapped properties.
50
+ const signal = new Proxy(target, {
51
+ get(target, property, receiver) {
52
+ if (Object.hasOwn(target, property)) {
53
+ return Reflect.get(target, property, receiver);
54
+ }
55
+ if (typeof property !== "string")
56
+ return undefined;
57
+ return transform([signal], (value) => {
58
+ if (value == null) {
59
+ throw new TypeError(`Cannot read property ${property} from ${String(value)}.`);
60
+ }
61
+ return Reflect.get(Object(value), property);
62
+ });
63
+ },
64
+ });
65
+ return signal;
66
+ }
67
+ /**
68
+ * Creates a signal carrying a derived-value transform.
69
+ *
70
+ * @param inputs - Signals consumed by the transformer.
71
+ * @param transformer - Pure function that computes the derived value.
72
+ */
73
+ function createTransformSignal(inputs, transformer) {
74
+ return Object.assign(createSignalProxy(), {
75
+ [signalTransform]: {
76
+ inputs,
77
+ transform: transformer,
78
+ },
79
+ });
80
+ }
@@ -0,0 +1,10 @@
1
+ import type { Encodable } from "@automate.ax/codec";
2
+ import type { Signal } from "./signal.js";
3
+ /**
4
+ * Registers an event subscription in planning and creates its signal.
5
+ *
6
+ * @param eventType - Event type to subscribe to.
7
+ * @param config - Configuration for the event type.
8
+ */
9
+ export declare function subscribe<TEvent extends Encodable>(eventType: string, config: unknown): Signal<TEvent>;
10
+ //# sourceMappingURL=subscribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/automation/subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAgB;AAEtC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,SAAS,SAAS,EAChD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,CAAC,CAShB"}
@@ -0,0 +1,16 @@
1
+ import { consumeHookSlot } from "./runtime.js";
2
+ import { createSubscriptionSignal } from "./signal.js";
3
+ /**
4
+ * Registers an event subscription in planning and creates its signal.
5
+ *
6
+ * @param eventType - Event type to subscribe to.
7
+ * @param config - Configuration for the event type.
8
+ */
9
+ export function subscribe(eventType, config) {
10
+ const hookSlot = consumeHookSlot();
11
+ const planningContext = globalThis.__AUTOMATION_PLANNING_CONTEXT__;
12
+ if (planningContext) {
13
+ planningContext.subscriptions.push({ config, eventType, hookSlot });
14
+ }
15
+ return createSubscriptionSignal(hookSlot);
16
+ }
@@ -0,0 +1,46 @@
1
+ export declare const commandNames: {
2
+ readonly accept: "accept";
3
+ readonly debug: "debug";
4
+ readonly deploy: "deploy";
5
+ readonly invite: "invite";
6
+ readonly login: "login";
7
+ readonly logout: "logout";
8
+ readonly me: "me";
9
+ readonly org: {
10
+ readonly apiKey: {
11
+ readonly create: "create";
12
+ readonly delete: "delete";
13
+ readonly list: "list";
14
+ readonly rename: "rename";
15
+ readonly root: "apikey";
16
+ };
17
+ readonly billing: "billing";
18
+ readonly create: "create";
19
+ readonly delete: "delete";
20
+ readonly invite: "invite";
21
+ readonly leave: "leave";
22
+ readonly list: "list";
23
+ readonly remove: "remove";
24
+ readonly rename: "rename";
25
+ readonly root: "org";
26
+ readonly show: "show";
27
+ readonly upgrade: "upgrade";
28
+ };
29
+ readonly project: {
30
+ readonly create: "create";
31
+ readonly delete: "delete";
32
+ readonly list: "list";
33
+ readonly rename: "rename";
34
+ readonly root: "project";
35
+ readonly show: "show";
36
+ };
37
+ readonly root: "automate";
38
+ readonly upgrade: "upgrade";
39
+ };
40
+ export declare const commandExamples: {
41
+ readonly login: "automate login";
42
+ readonly orgApiKeyCreate: "automate org apikey create";
43
+ readonly orgCreate: "automate org create";
44
+ readonly projectCreate: "automate project create";
45
+ };
46
+ //# sourceMappingURL=command-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-names.d.ts","sourceRoot":"","sources":["../../src/cli/command-names.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCf,CAAA;AAEV,eAAO,MAAM,eAAe;;;;;CAKlB,CAAA"}
@@ -0,0 +1,46 @@
1
+ const commandRoot = "automate";
2
+ export const commandNames = {
3
+ accept: "accept",
4
+ debug: "debug",
5
+ deploy: "deploy",
6
+ invite: "invite",
7
+ login: "login",
8
+ logout: "logout",
9
+ me: "me",
10
+ org: {
11
+ apiKey: {
12
+ create: "create",
13
+ delete: "delete",
14
+ list: "list",
15
+ rename: "rename",
16
+ root: "apikey",
17
+ },
18
+ billing: "billing",
19
+ create: "create",
20
+ delete: "delete",
21
+ invite: "invite",
22
+ leave: "leave",
23
+ list: "list",
24
+ remove: "remove",
25
+ rename: "rename",
26
+ root: "org",
27
+ show: "show",
28
+ upgrade: "upgrade",
29
+ },
30
+ project: {
31
+ create: "create",
32
+ delete: "delete",
33
+ list: "list",
34
+ rename: "rename",
35
+ root: "project",
36
+ show: "show",
37
+ },
38
+ root: commandRoot,
39
+ upgrade: "upgrade",
40
+ };
41
+ export const commandExamples = {
42
+ login: `${commandRoot} ${commandNames.login}`,
43
+ orgApiKeyCreate: `${commandRoot} ${commandNames.org.root} ${commandNames.org.apiKey.root} ${commandNames.org.apiKey.create}`,
44
+ orgCreate: `${commandRoot} ${commandNames.org.root} ${commandNames.org.create}`,
45
+ projectCreate: `${commandRoot} ${commandNames.project.root} ${commandNames.project.create}`,
46
+ };
@@ -0,0 +1,20 @@
1
+ import z from "zod";
2
+ /** Arguments accepted by the invitation acceptance command. */
3
+ declare const acceptOptsSchema: z.ZodObject<{
4
+ invitationId: z.ZodString;
5
+ }, z.core.$strip>;
6
+ export declare const acceptCommand: import("citty").CommandDef<{
7
+ readonly invitationId: {
8
+ readonly type: "positional";
9
+ readonly description: "Invitation ID from the invite email";
10
+ readonly required: true;
11
+ };
12
+ }>;
13
+ /**
14
+ * Accepts an organization invitation by ID.
15
+ *
16
+ * @param opts - Validated command options containing the invitation ID.
17
+ */
18
+ export declare function acceptInvitation(opts: z.infer<typeof acceptOptsSchema>): Promise<void>;
19
+ export {};
20
+ //# sourceMappingURL=accept.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accept.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/accept.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAA;AAOnB,+DAA+D;AAC/D,QAAA,MAAM,gBAAgB;;iBAEpB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;EAaxB,CAAA;AAEF;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,iBAY5E"}
@@ -0,0 +1,42 @@
1
+ import { log } from "@clack/prompts";
2
+ import { defineCommand } from "citty";
3
+ import z from "zod";
4
+ import { commandNames } from "../command-names.js";
5
+ import { authClient } from "../lib/auth-client.js";
6
+ import { createCommandRun, output, useSession } from "../utils.js";
7
+ import { accent } from "../lib/io.js";
8
+ import { clearSpinner, startSpinner } from "../lib/spinner.js";
9
+ /** Arguments accepted by the invitation acceptance command. */
10
+ const acceptOptsSchema = z.object({
11
+ invitationId: z.string(),
12
+ });
13
+ export const acceptCommand = defineCommand({
14
+ meta: {
15
+ name: commandNames.accept,
16
+ description: "Accept an organization invitation",
17
+ },
18
+ args: {
19
+ invitationId: {
20
+ type: "positional",
21
+ description: "Invitation ID from the invite email",
22
+ required: true,
23
+ },
24
+ },
25
+ run: createCommandRun(acceptOptsSchema, acceptInvitation),
26
+ });
27
+ /**
28
+ * Accepts an organization invitation by ID.
29
+ *
30
+ * @param opts - Validated command options containing the invitation ID.
31
+ */
32
+ export async function acceptInvitation(opts) {
33
+ await useSession();
34
+ startSpinner("Accepting invitation");
35
+ const { member } = await authClient.organization.acceptInvitation({
36
+ invitationId: opts.invitationId,
37
+ });
38
+ clearSpinner();
39
+ output
40
+ .normal(() => log.success(`Joined organization as ${accent(member.role)}`))
41
+ .json(member);
42
+ }
@@ -0,0 +1,4 @@
1
+ export declare const debugCommand: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ /** Logs APP_ORIGIN and the RPC/auth base URLs derived from it. */
3
+ export declare function debug(): Promise<void>;
4
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/debug.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,qDAMvB,CAAA;AAEF,kEAAkE;AAClE,wBAAsB,KAAK,kBA2C1B"}