@appport/sdk 1.1.3 → 1.1.8

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 (71) hide show
  1. package/README.md +20 -3
  2. package/dist/application-onboarding.d.ts +52 -0
  3. package/dist/application-onboarding.d.ts.map +1 -0
  4. package/dist/application-onboarding.js +50 -0
  5. package/dist/application-onboarding.js.map +1 -0
  6. package/dist/execution-topology.d.ts +210 -0
  7. package/dist/execution-topology.d.ts.map +1 -0
  8. package/dist/execution-topology.js +558 -0
  9. package/dist/execution-topology.js.map +1 -0
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/package.json +1 -1
  15. package/vendor/@appport/client/dist/host.d.ts +62 -0
  16. package/vendor/@appport/client/dist/host.d.ts.map +1 -0
  17. package/vendor/@appport/client/dist/host.js +139 -0
  18. package/vendor/@appport/client/dist/host.js.map +1 -0
  19. package/vendor/@appport/client/dist/index.d.ts +1 -0
  20. package/vendor/@appport/client/dist/index.d.ts.map +1 -1
  21. package/vendor/@appport/client/dist/index.js +1 -0
  22. package/vendor/@appport/client/dist/index.js.map +1 -1
  23. package/vendor/@appport/core/dist/appboundry-diagnostics.d.ts +107 -0
  24. package/vendor/@appport/core/dist/appboundry-diagnostics.d.ts.map +1 -0
  25. package/vendor/@appport/core/dist/appboundry-diagnostics.js +358 -0
  26. package/vendor/@appport/core/dist/appboundry-diagnostics.js.map +1 -0
  27. package/vendor/@appport/core/dist/appboundry-execution.d.ts +12 -0
  28. package/vendor/@appport/core/dist/appboundry-execution.d.ts.map +1 -1
  29. package/vendor/@appport/core/dist/appboundry-execution.js +46 -10
  30. package/vendor/@appport/core/dist/appboundry-execution.js.map +1 -1
  31. package/vendor/@appport/core/dist/appboundry-exercise.d.ts +152 -0
  32. package/vendor/@appport/core/dist/appboundry-exercise.d.ts.map +1 -0
  33. package/vendor/@appport/core/dist/appboundry-exercise.js +416 -0
  34. package/vendor/@appport/core/dist/appboundry-exercise.js.map +1 -0
  35. package/vendor/@appport/core/dist/appboundry-materialization.d.ts.map +1 -1
  36. package/vendor/@appport/core/dist/appboundry-materialization.js +20 -0
  37. package/vendor/@appport/core/dist/appboundry-materialization.js.map +1 -1
  38. package/vendor/@appport/core/dist/appboundry-migration.d.ts +195 -0
  39. package/vendor/@appport/core/dist/appboundry-migration.d.ts.map +1 -0
  40. package/vendor/@appport/core/dist/appboundry-migration.js +227 -0
  41. package/vendor/@appport/core/dist/appboundry-migration.js.map +1 -0
  42. package/vendor/@appport/core/dist/appboundry-onboarding.d.ts +70 -0
  43. package/vendor/@appport/core/dist/appboundry-onboarding.d.ts.map +1 -0
  44. package/vendor/@appport/core/dist/appboundry-onboarding.js +232 -0
  45. package/vendor/@appport/core/dist/appboundry-onboarding.js.map +1 -0
  46. package/vendor/@appport/core/dist/appboundry-operation-discovery.d.ts +93 -0
  47. package/vendor/@appport/core/dist/appboundry-operation-discovery.d.ts.map +1 -0
  48. package/vendor/@appport/core/dist/appboundry-operation-discovery.js +89 -0
  49. package/vendor/@appport/core/dist/appboundry-operation-discovery.js.map +1 -0
  50. package/vendor/@appport/core/dist/appboundry-usage.d.ts +94 -0
  51. package/vendor/@appport/core/dist/appboundry-usage.d.ts.map +1 -0
  52. package/vendor/@appport/core/dist/appboundry-usage.js +80 -0
  53. package/vendor/@appport/core/dist/appboundry-usage.js.map +1 -0
  54. package/vendor/@appport/core/dist/application-package.d.ts +105 -0
  55. package/vendor/@appport/core/dist/application-package.d.ts.map +1 -0
  56. package/vendor/@appport/core/dist/application-package.js +349 -0
  57. package/vendor/@appport/core/dist/application-package.js.map +1 -0
  58. package/vendor/@appport/core/dist/contract-artifact.js +9 -0
  59. package/vendor/@appport/core/dist/contract-artifact.js.map +1 -1
  60. package/vendor/@appport/core/dist/index.d.ts +9 -0
  61. package/vendor/@appport/core/dist/index.d.ts.map +1 -1
  62. package/vendor/@appport/core/dist/index.js +8 -0
  63. package/vendor/@appport/core/dist/index.js.map +1 -1
  64. package/vendor/@appport/core/dist/provider-contract.d.ts +89 -0
  65. package/vendor/@appport/core/dist/provider-contract.d.ts.map +1 -0
  66. package/vendor/@appport/core/dist/provider-contract.js +40 -0
  67. package/vendor/@appport/core/dist/provider-contract.js.map +1 -0
  68. package/vendor/@appport/core/dist/wasm-engine.d.ts +2 -0
  69. package/vendor/@appport/core/dist/wasm-engine.d.ts.map +1 -1
  70. package/vendor/@appport/core/dist/wasm-engine.js +10 -1
  71. package/vendor/@appport/core/dist/wasm-engine.js.map +1 -1
package/README.md CHANGED
@@ -20,11 +20,13 @@ npx appport add # guided capability setup
20
20
  npx appport dev
21
21
  ```
22
22
 
23
- Use `@appport/sdk` in application code to define contracts and handlers. Use the
24
- `appport` CLI to scaffold, generate, run, test, and validate them.
23
+ Use `@appport/sdk` in application code to define contracts and handlers. The SDK
24
+ is also the canonical producer of the AppPort application package that
25
+ AppBoundry consumes; use the `appport` CLI to scaffold, generate, run, test, and
26
+ validate the same contract.
25
27
 
26
28
  ```ts
27
- import { AppPortApplication, defineCapability, s } from "@appport/sdk";
29
+ import { AppPortApplication, createApplicationPackage, defineApplication, defineCapability, s } from "@appport/sdk";
28
30
 
29
31
  const history = defineCapability({
30
32
  name: "tracker.history",
@@ -35,6 +37,21 @@ const history = defineCapability({
35
37
  return { entries: await existingTracker.history(trackerId) };
36
38
  }
37
39
  });
40
+
41
+ export const tracker = defineApplication({
42
+ id: "com.example.tracker",
43
+ name: "Tracker",
44
+ version: "1.0.0",
45
+ provides: [history]
46
+ });
47
+
48
+ const appPackage = createApplicationPackage(tracker, {
49
+ artifact: await readCompiledWasmBytes(),
50
+ implementationId: "tracker.wasm"
51
+ });
52
+
53
+ // appPackage.files contains the `.app` bundle manifest and application.wasm.
54
+ // appPackage.contractFingerprint is the canonical contract fingerprint.
38
55
  ```
39
56
 
40
57
  See all CLI commands with `npx appport --help`. The main workflow is `add`,
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Shared AppBoundry application onboarding model.
3
+ *
4
+ * The CLI and the future portal import path have different owners and UX, but
5
+ * they advance the same neutral application model through the same phases.
6
+ */
7
+ import type { ExecutionTopology } from "./execution-topology.js";
8
+ export type ApplicationOnboardingEntryPoint = "self" | "portal";
9
+ export type ApplicationOwnership = "developer" | "enterprise";
10
+ export type ApplicationOnboardingPhaseName = "discover" | "start" | "exercise" | "resolve";
11
+ export type ApplicationOnboardingPhaseStatus = "ready" | "needs_input" | "complete";
12
+ export interface ApplicationOnboardingRepository {
13
+ readonly name: string;
14
+ readonly runtime: string;
15
+ readonly packageManager: string;
16
+ readonly buildSystem: string;
17
+ readonly existingAppPort?: boolean;
18
+ readonly existingContract?: boolean;
19
+ }
20
+ export interface ApplicationOnboardingCapability {
21
+ readonly name: string;
22
+ readonly surface: string;
23
+ readonly target: string;
24
+ readonly source: string;
25
+ readonly exercised?: boolean;
26
+ readonly inputSchema?: unknown;
27
+ readonly outputSchema?: unknown;
28
+ }
29
+ export interface ApplicationOnboardingInput {
30
+ readonly entryPoint: ApplicationOnboardingEntryPoint;
31
+ readonly ownership: ApplicationOwnership;
32
+ readonly repository: ApplicationOnboardingRepository;
33
+ readonly capabilities: readonly ApplicationOnboardingCapability[];
34
+ readonly startCommand?: string;
35
+ readonly topology?: ExecutionTopology;
36
+ }
37
+ export interface ApplicationOnboardingPhase {
38
+ readonly name: ApplicationOnboardingPhaseName;
39
+ readonly status: ApplicationOnboardingPhaseStatus;
40
+ readonly summary: string;
41
+ }
42
+ export interface ApplicationOnboardingPlan {
43
+ readonly entryPoint: ApplicationOnboardingEntryPoint;
44
+ readonly ownership: ApplicationOwnership;
45
+ readonly repository: ApplicationOnboardingRepository;
46
+ readonly capabilities: readonly ApplicationOnboardingCapability[];
47
+ readonly phases: readonly ApplicationOnboardingPhase[];
48
+ readonly selectedCapabilities: readonly string[];
49
+ readonly topology?: ExecutionTopology;
50
+ }
51
+ export declare function createApplicationOnboardingPlan(input: ApplicationOnboardingInput): ApplicationOnboardingPlan;
52
+ //# sourceMappingURL=application-onboarding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-onboarding.d.ts","sourceRoot":"","sources":["../src/application-onboarding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,MAAM,+BAA+B,GAAG,MAAM,GAAG,QAAQ,CAAC;AAChE,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,YAAY,CAAC;AAC9D,MAAM,MAAM,8BAA8B,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3F,MAAM,MAAM,gCAAgC,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;AAEpF,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,gCAAgC,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAClE,QAAQ,CAAC,MAAM,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACvD,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,0BAA0B,GAAG,yBAAyB,CA2C5G"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Shared AppBoundry application onboarding model.
3
+ *
4
+ * The CLI and the future portal import path have different owners and UX, but
5
+ * they advance the same neutral application model through the same phases.
6
+ */
7
+ export function createApplicationOnboardingPlan(input) {
8
+ const capabilities = [...input.capabilities].sort((a, b) => a.name.localeCompare(b.name));
9
+ const selectedCapabilities = capabilities.map(capability => capability.name);
10
+ const exercised = capabilities.filter(capability => capability.exercised).length;
11
+ return {
12
+ entryPoint: input.entryPoint,
13
+ ownership: input.ownership,
14
+ repository: input.repository,
15
+ capabilities,
16
+ ...(input.topology ? { topology: input.topology } : {}),
17
+ selectedCapabilities,
18
+ phases: [
19
+ {
20
+ name: "discover",
21
+ status: capabilities.length ? "complete" : "needs_input",
22
+ summary: capabilities.length
23
+ ? `${capabilities.length} invocation ${capabilities.length === 1 ? "surface" : "surfaces"} discovered`
24
+ : "No invocation surface was discovered"
25
+ },
26
+ {
27
+ name: "start",
28
+ status: input.startCommand ? "ready" : "needs_input",
29
+ summary: input.startCommand ?? "No repository start command was detected"
30
+ },
31
+ {
32
+ name: "exercise",
33
+ status: exercised ? "complete" : capabilities.length ? "ready" : "needs_input",
34
+ summary: exercised
35
+ ? `${exercised} live ${exercised === 1 ? "operation" : "operations"} exercised`
36
+ : capabilities.length
37
+ ? "Ready to exercise discovered operations in Studio"
38
+ : "Discover operations before exercising them"
39
+ },
40
+ {
41
+ name: "resolve",
42
+ status: capabilities.length ? "ready" : "needs_input",
43
+ summary: capabilities.length
44
+ ? `${selectedCapabilities.length} draft ${selectedCapabilities.length === 1 ? "capability" : "capabilities"} ready for contract resolution`
45
+ : "Select or define a capability before resolving the contract"
46
+ }
47
+ ]
48
+ };
49
+ }
50
+ //# sourceMappingURL=application-onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-onboarding.js","sourceRoot":"","sources":["../src/application-onboarding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqDH,MAAM,UAAU,+BAA+B,CAAC,KAAiC;IAC/E,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAEjF,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY;QACZ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,oBAAoB;QACpB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;gBACxD,OAAO,EAAE,YAAY,CAAC,MAAM;oBAC1B,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,eAAe,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,aAAa;oBACtG,CAAC,CAAC,sCAAsC;aAC3C;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;gBACpD,OAAO,EAAE,KAAK,CAAC,YAAY,IAAI,0CAA0C;aAC1E;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;gBAC9E,OAAO,EAAE,SAAS;oBAChB,CAAC,CAAC,GAAG,SAAS,SAAS,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,YAAY;oBAC/E,CAAC,CAAC,YAAY,CAAC,MAAM;wBACnB,CAAC,CAAC,mDAAmD;wBACrD,CAAC,CAAC,4CAA4C;aACnD;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;gBACrD,OAAO,EAAE,YAAY,CAAC,MAAM;oBAC1B,CAAC,CAAC,GAAG,oBAAoB,CAAC,MAAM,UAAU,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,gCAAgC;oBAC3I,CAAC,CAAC,6DAA6D;aAClE;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,210 @@
1
+ export type ExecutionEvidenceConfidence = "low" | "medium" | "high" | "verified";
2
+ export type ExecutionEvidenceKind = "declared" | "inferred" | "observed" | "verified";
3
+ export type ExecutionProjectKind = "application" | "service" | "library" | "repository";
4
+ export type ExecutionStrategy = "native" | "docker" | "compose" | "hybrid";
5
+ export type ExecutionRuntimeKind = "node" | "python" | "rust" | "go" | "container" | "unknown";
6
+ export type ExecutionGraphNodeType = "repository" | "project" | "application" | "service" | "process" | "container" | "container_group" | "runtime" | "worker" | "database" | "queue" | "invocation_surface" | "dependency";
7
+ export type ExecutionGraphEdgeType = "CONTAINS" | "DEPENDS_ON" | "STARTS_BEFORE" | "STARTS_AFTER" | "REQUIRES" | "PROVIDES" | "EXPOSES" | "RUNS_IN" | "GENERATES" | "HEALTH_DEPENDS_ON" | "OPTIONAL_FOR";
8
+ export type ExecutionLifecycleState = "declared" | "inferred" | "observed" | "verified" | "ready" | "failed" | "blocked";
9
+ export interface ExecutionEvidence {
10
+ readonly source: string;
11
+ readonly confidence: ExecutionEvidenceConfidence;
12
+ readonly kind?: ExecutionEvidenceKind;
13
+ readonly detail?: string;
14
+ }
15
+ export interface ExecutionTopologyFile {
16
+ readonly path: string;
17
+ readonly content?: string;
18
+ }
19
+ export interface ExecutionTopologyRepository {
20
+ readonly name: string;
21
+ readonly root: string;
22
+ readonly evidence: readonly ExecutionEvidence[];
23
+ }
24
+ export interface ExecutionProject {
25
+ readonly id: string;
26
+ readonly path: string;
27
+ readonly name: string;
28
+ readonly kind: ExecutionProjectKind;
29
+ readonly runtime?: string;
30
+ readonly evidence: readonly ExecutionEvidence[];
31
+ }
32
+ export interface ExecutionApplication {
33
+ readonly id: string;
34
+ readonly project: string;
35
+ readonly name: string;
36
+ readonly kind: "application" | "service";
37
+ readonly processes: readonly string[];
38
+ readonly surfaces: readonly string[];
39
+ readonly dependencies: readonly string[];
40
+ readonly evidence: readonly ExecutionEvidence[];
41
+ }
42
+ export interface ExecutionRuntime {
43
+ readonly id: string;
44
+ readonly kind: ExecutionRuntimeKind;
45
+ readonly name: string;
46
+ readonly project?: string;
47
+ readonly evidence: readonly ExecutionEvidence[];
48
+ }
49
+ export interface ExecutionProcess {
50
+ readonly id: string;
51
+ readonly project: string;
52
+ readonly runtime: string;
53
+ readonly command: string;
54
+ readonly role: "web" | "api" | "worker" | "job" | "unknown";
55
+ readonly optional: boolean;
56
+ readonly exposesSurface: boolean;
57
+ readonly evidence: readonly ExecutionEvidence[];
58
+ }
59
+ export interface ExecutionContainer {
60
+ readonly id: string;
61
+ readonly name: string;
62
+ readonly image?: string;
63
+ readonly service?: string;
64
+ readonly ports: readonly number[];
65
+ readonly dependencies: readonly string[];
66
+ readonly evidence: readonly ExecutionEvidence[];
67
+ }
68
+ export interface ExecutionSurface {
69
+ readonly id: string;
70
+ readonly protocol: "http" | "tcp" | "appport" | "unknown";
71
+ readonly host?: string;
72
+ readonly port?: number;
73
+ readonly declaredPort?: number;
74
+ readonly actualPort?: number;
75
+ readonly reachable?: boolean;
76
+ readonly source: string;
77
+ readonly process?: string;
78
+ readonly container?: string;
79
+ readonly invocationCapability?: string;
80
+ readonly health: "declared" | "observed" | "unknown";
81
+ readonly evidence: readonly ExecutionEvidence[];
82
+ }
83
+ export interface ExecutionDependency {
84
+ readonly id: string;
85
+ readonly name: string;
86
+ readonly kind: "database" | "cache" | "queue" | "external-api" | "local-service" | "application" | "unknown";
87
+ readonly required: boolean;
88
+ readonly developmentOnly: boolean;
89
+ readonly evidence: readonly ExecutionEvidence[];
90
+ }
91
+ export interface ExecutionEnvironment {
92
+ readonly id: string;
93
+ readonly name: "development" | "test" | "staging" | "production" | "custom";
94
+ readonly selected: boolean;
95
+ readonly sources: readonly string[];
96
+ readonly evidence: readonly ExecutionEvidence[];
97
+ }
98
+ export interface ExecutionEnvironmentVariable {
99
+ readonly name: string;
100
+ readonly source: string;
101
+ readonly required: boolean;
102
+ readonly optional: boolean;
103
+ readonly secret: boolean;
104
+ readonly configured: boolean;
105
+ readonly default?: string;
106
+ readonly referencedBy: readonly string[];
107
+ readonly evidence: readonly ExecutionEvidence[];
108
+ }
109
+ export interface StartupGraphNode {
110
+ readonly id: string;
111
+ readonly label: string;
112
+ readonly kind: "process" | "container";
113
+ readonly optional: boolean;
114
+ }
115
+ export interface StartupGraphEdge {
116
+ readonly from: string;
117
+ readonly to: string;
118
+ readonly reason: string;
119
+ readonly evidence: readonly ExecutionEvidence[];
120
+ }
121
+ export interface StartupGraph {
122
+ readonly nodes: readonly StartupGraphNode[];
123
+ readonly edges: readonly StartupGraphEdge[];
124
+ }
125
+ export interface ExecutionReadinessContract {
126
+ readonly state: ExecutionLifecycleState;
127
+ readonly checks: readonly string[];
128
+ readonly readyWhen: readonly string[];
129
+ readonly evidence: readonly ExecutionEvidence[];
130
+ }
131
+ export interface ExecutionGraphNode {
132
+ readonly id: string;
133
+ readonly type: ExecutionGraphNodeType;
134
+ readonly label: string;
135
+ readonly runtime?: string;
136
+ readonly executionStrategy?: ExecutionStrategy | "external";
137
+ readonly configuration: readonly string[];
138
+ readonly surfaces: readonly string[];
139
+ readonly dependencies: readonly string[];
140
+ readonly lifecycle: ExecutionLifecycleState;
141
+ readonly readiness: ExecutionReadinessContract;
142
+ readonly evidence: readonly ExecutionEvidence[];
143
+ }
144
+ export interface ExecutionGraphEdge {
145
+ readonly from: string;
146
+ readonly to: string;
147
+ readonly type: ExecutionGraphEdgeType;
148
+ readonly evidence: readonly ExecutionEvidence[];
149
+ }
150
+ export interface ExecutionCondition {
151
+ readonly type: "environment_configured" | "dependency_ready" | "surface_reachable" | "command_available" | "docker_available" | "capability_verified";
152
+ readonly target: string;
153
+ readonly required: boolean;
154
+ }
155
+ export interface ExecutionStep {
156
+ readonly id: string;
157
+ readonly action: "prepare" | "validate_configuration" | "start" | "wait" | "verify" | "exercise" | "mark_ready";
158
+ readonly target: string;
159
+ readonly prerequisites: readonly string[];
160
+ readonly conditions: readonly ExecutionCondition[];
161
+ readonly readiness: ExecutionReadinessContract;
162
+ readonly timeoutMs: number;
163
+ readonly retry: {
164
+ readonly attempts: number;
165
+ readonly delayMs: number;
166
+ };
167
+ readonly failurePolicy: "stop" | "continue" | "skip_dependents";
168
+ readonly evidence: readonly ExecutionEvidence[];
169
+ }
170
+ export interface ExecutionPlan {
171
+ readonly id: string;
172
+ readonly name: string;
173
+ readonly steps: readonly ExecutionStep[];
174
+ readonly parallelGroups: readonly string[][];
175
+ readonly evidence: readonly ExecutionEvidence[];
176
+ }
177
+ export interface ExecutionGraph {
178
+ readonly nodes: readonly ExecutionGraphNode[];
179
+ readonly edges: readonly ExecutionGraphEdge[];
180
+ readonly environments: readonly ExecutionEnvironment[];
181
+ readonly plans: readonly ExecutionPlan[];
182
+ }
183
+ export interface ExecutionTopology {
184
+ readonly repository: ExecutionTopologyRepository;
185
+ readonly projects: readonly ExecutionProject[];
186
+ readonly applications: readonly ExecutionApplication[];
187
+ readonly processes: readonly ExecutionProcess[];
188
+ readonly runtimes: readonly ExecutionRuntime[];
189
+ readonly containers: readonly ExecutionContainer[];
190
+ readonly surfaces: readonly ExecutionSurface[];
191
+ readonly dependencies: readonly ExecutionDependency[];
192
+ readonly environments: readonly ExecutionEnvironment[];
193
+ readonly environmentVariables: readonly ExecutionEnvironmentVariable[];
194
+ readonly startupGraph: StartupGraph;
195
+ readonly executionGraph: ExecutionGraph;
196
+ readonly strategies: readonly ExecutionStrategy[];
197
+ }
198
+ export interface ExecutionTopologyCapability {
199
+ readonly name: string;
200
+ readonly surface: string;
201
+ readonly target: string;
202
+ readonly source: string;
203
+ }
204
+ export interface DiscoverExecutionTopologyInput {
205
+ readonly repositoryName: string;
206
+ readonly files: readonly ExecutionTopologyFile[];
207
+ readonly capabilities?: readonly ExecutionTopologyCapability[];
208
+ }
209
+ export declare function discoverExecutionTopology(input: DiscoverExecutionTopologyInput): ExecutionTopology;
210
+ //# sourceMappingURL=execution-topology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-topology.d.ts","sourceRoot":"","sources":["../src/execution-topology.ts"],"names":[],"mappings":"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"}