@appport/sdk 1.0.2 → 1.1.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 (90) hide show
  1. package/README.md +23 -1
  2. package/dist/external-compatibility.d.ts +142 -0
  3. package/dist/external-compatibility.d.ts.map +1 -0
  4. package/dist/external-compatibility.js +132 -0
  5. package/dist/external-compatibility.js.map +1 -0
  6. package/dist/index.d.ts +4 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/provider-lifecycle.d.ts +247 -0
  11. package/dist/provider-lifecycle.d.ts.map +1 -0
  12. package/dist/provider-lifecycle.js +314 -0
  13. package/dist/provider-lifecycle.js.map +1 -0
  14. package/dist/resolution-policy.d.ts +81 -0
  15. package/dist/resolution-policy.d.ts.map +1 -0
  16. package/dist/resolution-policy.js +131 -0
  17. package/dist/resolution-policy.js.map +1 -0
  18. package/package.json +1 -1
  19. package/vendor/@appport/core/dist/appboundry-capability-catalog.d.ts +930 -0
  20. package/vendor/@appport/core/dist/appboundry-capability-catalog.d.ts.map +1 -0
  21. package/vendor/@appport/core/dist/appboundry-capability-catalog.js +352 -0
  22. package/vendor/@appport/core/dist/appboundry-capability-catalog.js.map +1 -0
  23. package/vendor/@appport/core/dist/appboundry-composition.d.ts +93 -0
  24. package/vendor/@appport/core/dist/appboundry-composition.d.ts.map +1 -0
  25. package/vendor/@appport/core/dist/appboundry-composition.js +184 -0
  26. package/vendor/@appport/core/dist/appboundry-composition.js.map +1 -0
  27. package/vendor/@appport/core/dist/appboundry-discovery.d.ts +110 -0
  28. package/vendor/@appport/core/dist/appboundry-discovery.d.ts.map +1 -0
  29. package/vendor/@appport/core/dist/appboundry-discovery.js +141 -0
  30. package/vendor/@appport/core/dist/appboundry-discovery.js.map +1 -0
  31. package/vendor/@appport/core/dist/appboundry-entitlements.d.ts +128 -0
  32. package/vendor/@appport/core/dist/appboundry-entitlements.d.ts.map +1 -0
  33. package/vendor/@appport/core/dist/appboundry-entitlements.js +312 -0
  34. package/vendor/@appport/core/dist/appboundry-entitlements.js.map +1 -0
  35. package/vendor/@appport/core/dist/appboundry-execution.d.ts +72 -0
  36. package/vendor/@appport/core/dist/appboundry-execution.d.ts.map +1 -0
  37. package/vendor/@appport/core/dist/appboundry-execution.js +114 -0
  38. package/vendor/@appport/core/dist/appboundry-execution.js.map +1 -0
  39. package/vendor/@appport/core/dist/appboundry-materialization.d.ts +222 -0
  40. package/vendor/@appport/core/dist/appboundry-materialization.d.ts.map +1 -0
  41. package/vendor/@appport/core/dist/appboundry-materialization.js +474 -0
  42. package/vendor/@appport/core/dist/appboundry-materialization.js.map +1 -0
  43. package/vendor/@appport/core/dist/appboundry-resolution.d.ts +160 -0
  44. package/vendor/@appport/core/dist/appboundry-resolution.d.ts.map +1 -0
  45. package/vendor/@appport/core/dist/appboundry-resolution.js +218 -0
  46. package/vendor/@appport/core/dist/appboundry-resolution.js.map +1 -0
  47. package/vendor/@appport/core/dist/appboundry-surface.d.ts +96 -0
  48. package/vendor/@appport/core/dist/appboundry-surface.d.ts.map +1 -0
  49. package/vendor/@appport/core/dist/appboundry-surface.js +223 -0
  50. package/vendor/@appport/core/dist/appboundry-surface.js.map +1 -0
  51. package/vendor/@appport/core/dist/application.d.ts +3 -1
  52. package/vendor/@appport/core/dist/application.d.ts.map +1 -1
  53. package/vendor/@appport/core/dist/application.js +3 -0
  54. package/vendor/@appport/core/dist/application.js.map +1 -1
  55. package/vendor/@appport/core/dist/index.d.ts +8 -0
  56. package/vendor/@appport/core/dist/index.d.ts.map +1 -1
  57. package/vendor/@appport/core/dist/index.js +8 -0
  58. package/vendor/@appport/core/dist/index.js.map +1 -1
  59. package/vendor/@appport/core/dist/public.d.ts +1 -0
  60. package/vendor/@appport/core/dist/public.d.ts.map +1 -1
  61. package/vendor/@appport/core/dist/public.js +1 -0
  62. package/vendor/@appport/core/dist/public.js.map +1 -1
  63. package/vendor/@appport/core/dist/registry.d.ts +2 -1
  64. package/vendor/@appport/core/dist/registry.d.ts.map +1 -1
  65. package/vendor/@appport/core/dist/registry.js +1 -0
  66. package/vendor/@appport/core/dist/registry.js.map +1 -1
  67. package/vendor/@appport/mcp/README.md +29 -0
  68. package/vendor/@appport/mcp/dist/index.d.ts +58 -0
  69. package/vendor/@appport/mcp/dist/index.d.ts.map +1 -0
  70. package/vendor/@appport/mcp/dist/index.js +69 -0
  71. package/vendor/@appport/mcp/dist/index.js.map +1 -0
  72. package/vendor/@appport/mcp/package.json +29 -0
  73. package/vendor/@appport/protocol/dist/errors.d.ts +1 -1
  74. package/vendor/@appport/protocol/dist/errors.d.ts.map +1 -1
  75. package/vendor/@appport/protocol/dist/errors.js +1 -0
  76. package/vendor/@appport/protocol/dist/errors.js.map +1 -1
  77. package/vendor/@appport/protocol/dist/index.d.ts +1 -0
  78. package/vendor/@appport/protocol/dist/index.d.ts.map +1 -1
  79. package/vendor/@appport/protocol/dist/index.js +1 -0
  80. package/vendor/@appport/protocol/dist/index.js.map +1 -1
  81. package/vendor/@appport/protocol/dist/manifest.d.ts +3 -0
  82. package/vendor/@appport/protocol/dist/manifest.d.ts.map +1 -1
  83. package/vendor/@appport/protocol/dist/manifest.js.map +1 -1
  84. package/vendor/@appport/protocol/dist/materialization.d.ts +59 -0
  85. package/vendor/@appport/protocol/dist/materialization.d.ts.map +1 -0
  86. package/vendor/@appport/protocol/dist/materialization.js +2 -0
  87. package/vendor/@appport/protocol/dist/materialization.js.map +1 -0
  88. package/vendor/@appport/server/dist/http.d.ts.map +1 -1
  89. package/vendor/@appport/server/dist/http.js +1 -0
  90. package/vendor/@appport/server/dist/http.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appboundry-resolution.d.ts","sourceRoot":"","sources":["../src/appboundry-resolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * AppBoundry capability resolution boundary.
3
+ *
4
+ * This is the AppBoundry-owned decision layer above the AppPort protocol:
5
+ * request context + available capabilities → authorization → deterministic
6
+ * resolution record. It produces data only; it does not materialize, schedule,
7
+ * deploy, execute, or depend on any particular state store.
8
+ */
9
+ import { PROTOCOL_ID } from "../../protocol/dist/index.js";
10
+ import { satisfiesVersionConstraint } from "./resolver.js";
11
+ export function allowAllAppBoundryAuthorizationBoundary() {
12
+ return {
13
+ evaluate() {
14
+ return { outcome: "allow" };
15
+ }
16
+ };
17
+ }
18
+ /** Evaluate one offered capability without consulting runtime implementation state. */
19
+ export function evaluateOfferedCapability(requirement, offer) {
20
+ const reasons = [];
21
+ if (offer.capability.name !== requirement.name) {
22
+ reasons.push(`Offer ${offer.provider.id} does not provide capability "${requirement.name}"`);
23
+ return { compatible: false, reasons };
24
+ }
25
+ const providerCapability = offer.provider.manifest.provides.find((capability) => capability.name === offer.capability.name && capability.version === offer.capability.version);
26
+ if (!providerCapability) {
27
+ reasons.push(`Offer ${offer.provider.id} is not declared by the provider contract`);
28
+ return { compatible: false, reasons };
29
+ }
30
+ const versionConstraint = requirement.versionConstraint || String(requirement.version);
31
+ if (!satisfiesVersionConstraint(offer.capability.version, versionConstraint)) {
32
+ reasons.push(`Offer version ${offer.capability.version} does not satisfy constraint "${versionConstraint}" for "${requirement.name}"`);
33
+ return { compatible: false, reasons };
34
+ }
35
+ if (requirement.provider?.applicationId && offer.provider.id !== requirement.provider.applicationId) {
36
+ reasons.push(`Requirement specifies provider "${requirement.provider.applicationId}" but got provider "${offer.provider.id}"`);
37
+ return { compatible: false, reasons };
38
+ }
39
+ return { compatible: true, reasons: [] };
40
+ }
41
+ /** Deterministically filter and order compatible offers for a requirement. */
42
+ export function matchCapabilityRequirement(requirement, offers) {
43
+ return offers
44
+ .map((offer) => ({ offer, compatibility: evaluateOfferedCapability(requirement, offer) }))
45
+ .filter((match) => match.compatibility.compatible)
46
+ .sort(compareMatches);
47
+ }
48
+ /** Discover provider offers from the AppBoundry application registry. */
49
+ export async function discoverCapabilityOffers(registry, requirement) {
50
+ if (requirement.provider?.applicationId) {
51
+ const provider = await registry.get(requirement.provider.applicationId);
52
+ if (!provider)
53
+ return [];
54
+ const capability = provider.manifest.provides.find((entry) => entry.name === requirement.name);
55
+ return capability ? [{ provider, capability }] : [];
56
+ }
57
+ const providers = await registry.findByCapability(requirement.name);
58
+ const offers = [];
59
+ for (const provider of providers) {
60
+ for (const capability of provider.manifest.provides) {
61
+ if (capability.name === requirement.name)
62
+ offers.push({ provider, capability });
63
+ }
64
+ }
65
+ return offers.sort(compareOffers);
66
+ }
67
+ /** AppBoundry decision layer for one capability request. */
68
+ export class AppBoundryCapabilityResolver {
69
+ registry;
70
+ authorization;
71
+ constructor(registry, authorization = allowAllAppBoundryAuthorizationBoundary()) {
72
+ this.registry = registry;
73
+ this.authorization = authorization;
74
+ }
75
+ async resolve(request) {
76
+ const application = await this.registry.get(request.applicationId);
77
+ const requirement = normalizeRequirement(request.requirement);
78
+ if (!application) {
79
+ return {
80
+ kind: "unresolved",
81
+ request,
82
+ requirement,
83
+ candidates: [],
84
+ reason: `Application "${request.applicationId}" not found in registry`
85
+ };
86
+ }
87
+ const offers = request.availableCapabilities ?? (await discoverCapabilityOffers(this.registry, requirement));
88
+ const compatible = matchCapabilityRequirement(requirement, offers);
89
+ if (compatible.length === 0) {
90
+ return {
91
+ kind: "unresolved",
92
+ request,
93
+ application,
94
+ requirement,
95
+ candidates: offers,
96
+ reason: `No compatible providers found for "${requirement.name}"`
97
+ };
98
+ }
99
+ const evaluated = [];
100
+ for (const match of compatible) {
101
+ evaluated.push({
102
+ ...match,
103
+ authorization: await this.authorization.evaluate({
104
+ request,
105
+ consumer: application,
106
+ provider: match.offer.provider,
107
+ capability: match.offer.capability,
108
+ requirement,
109
+ context: request.context
110
+ })
111
+ });
112
+ }
113
+ const allowed = evaluated.filter((candidate) => candidate.authorization.outcome === "allow");
114
+ if (allowed.length === 0) {
115
+ return {
116
+ kind: "denied",
117
+ request,
118
+ application,
119
+ requirement,
120
+ authorization: {
121
+ outcome: "deny",
122
+ reason: "policy_denied",
123
+ message: `No authorized provider found for "${requirement.name}"`
124
+ },
125
+ evaluated
126
+ };
127
+ }
128
+ const [selected] = allowed;
129
+ const deterministicEligibility = allowed.every((candidate) => isExplicitEligibility(candidate.offer.metadata));
130
+ const topVersionCandidates = allowed.filter((candidate) => candidate.offer.capability.version === selected.offer.capability.version);
131
+ if (!deterministicEligibility && new Set(topVersionCandidates.map((candidate) => candidate.offer.provider.id)).size > 1) {
132
+ return {
133
+ kind: "ambiguous",
134
+ request,
135
+ application,
136
+ requirement,
137
+ candidates: topVersionCandidates,
138
+ reason: `Multiple authorized providers satisfy "${requirement.name}@${selected.offer.capability.version}"`
139
+ };
140
+ }
141
+ return {
142
+ kind: "resolved",
143
+ resolutionId: computeAppBoundryResolutionId(request, application, selected.offer),
144
+ request,
145
+ application,
146
+ provider: selected.offer.provider,
147
+ capability: selected.offer.capability,
148
+ requirement,
149
+ authorization: selected.authorization,
150
+ evaluated,
151
+ ...(eligibilityEvidence(selected.offer.metadata) ? { eligibility: eligibilityEvidence(selected.offer.metadata) } : {}),
152
+ materialization: {
153
+ protocol: PROTOCOL_ID,
154
+ application: {
155
+ id: selected.offer.provider.id,
156
+ name: selected.offer.provider.name,
157
+ version: selected.offer.provider.version
158
+ },
159
+ capability: {
160
+ name: selected.offer.capability.name,
161
+ version: selected.offer.capability.version
162
+ },
163
+ contractFingerprint: selected.offer.provider.fingerprint,
164
+ ...(request.materialization?.requestedTarget ? { requestedTarget: request.materialization.requestedTarget } : {}),
165
+ ...(selected.offer.materialization ? { declaration: selected.offer.materialization } : {})
166
+ }
167
+ };
168
+ }
169
+ }
170
+ function isExplicitEligibility(metadata) {
171
+ return metadata?.["eligibilitySource"] === "relationship" || metadata?.["eligibilitySource"] === "open_offer";
172
+ }
173
+ function eligibilityEvidence(metadata) {
174
+ if (!metadata)
175
+ return undefined;
176
+ const source = metadata["eligibilitySource"];
177
+ if (source !== "relationship" && source !== "open_offer")
178
+ return undefined;
179
+ const relationshipId = metadata["relationshipId"];
180
+ const relationshipRevision = metadata["entitlementRevision"];
181
+ const offerId = metadata["offerId"];
182
+ const offerRevision = metadata["offerRevision"];
183
+ const availabilityModel = metadata["availabilityModel"];
184
+ return {
185
+ source,
186
+ ...(typeof relationshipId === "string" ? { relationshipId } : {}),
187
+ ...(typeof relationshipRevision === "number" ? { relationshipRevision } : {}),
188
+ ...(typeof offerId === "string" ? { offerId } : {}),
189
+ ...(typeof offerRevision === "number" ? { offerRevision } : {}),
190
+ ...(typeof availabilityModel === "string" ? { availabilityModel } : {})
191
+ };
192
+ }
193
+ function normalizeRequirement(requirement) {
194
+ return {
195
+ ...requirement,
196
+ versionConstraint: requirement.versionConstraint || String(requirement.version)
197
+ };
198
+ }
199
+ function computeAppBoundryResolutionId(request, application, offer) {
200
+ const versionConstraint = request.requirement.versionConstraint || String(request.requirement.version);
201
+ return [
202
+ request.requestId,
203
+ application.id,
204
+ `${request.requirement.name}@${versionConstraint}`,
205
+ offer.provider.id,
206
+ `${offer.capability.name}@${offer.capability.version}`,
207
+ offer.provider.fingerprint
208
+ ].join("::");
209
+ }
210
+ function compareMatches(left, right) {
211
+ return compareOffers(left.offer, right.offer);
212
+ }
213
+ function compareOffers(left, right) {
214
+ return (right.capability.version - left.capability.version ||
215
+ left.provider.id.localeCompare(right.provider.id) ||
216
+ left.provider.registrationId.localeCompare(right.provider.registrationId));
217
+ }
218
+ //# sourceMappingURL=appboundry-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appboundry-resolution.js","sourceRoot":"","sources":["../src/appboundry-resolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * AppBoundry context-aware capability surface resolution.
3
+ *
4
+ * A surface is a presentation-neutral contract describing which requested
5
+ * capabilities can exist for an application in the current context. It composes
6
+ * discovery, authorization, deterministic resolution, and materialization
7
+ * compatibility without rendering UI or executing capabilities.
8
+ */
9
+ import { type MaterializationRequest, type MaterializationTarget } from "../../protocol/dist/index.d.ts";
10
+ import { type CapabilityDiscovery } from "./appboundry-discovery.js";
11
+ import { AppBoundryCapabilityResolver, type AppBoundryRequestContext } from "./appboundry-resolution.js";
12
+ import { AppBoundryMaterializationResolver } from "./appboundry-materialization.js";
13
+ import type { ExecutableArtifact } from "./artifact.js";
14
+ import type { RequirementWithConstraints } from "./resolver.js";
15
+ export interface AppBoundrySurfaceRequest {
16
+ readonly requestId: string;
17
+ readonly applicationId: string;
18
+ readonly context: AppBoundryRequestContext;
19
+ readonly requirements: readonly RequirementWithConstraints[];
20
+ readonly requestedTarget?: MaterializationTarget;
21
+ readonly artifacts?: AppBoundrySurfaceArtifactLookup;
22
+ }
23
+ export type AppBoundrySurfaceArtifactLookup = ReadonlyMap<string, ExecutableArtifact> | Readonly<Record<string, ExecutableArtifact>>;
24
+ export interface AppBoundrySurfaceEvidence {
25
+ readonly requestId: string;
26
+ readonly surfaceId: string;
27
+ readonly applicationId: string;
28
+ readonly environment?: string;
29
+ readonly requestedTarget?: MaterializationTarget;
30
+ readonly resolvedAt: string;
31
+ }
32
+ export interface AppBoundrySurfaceCapability {
33
+ readonly kind: "available";
34
+ readonly capability: {
35
+ readonly name: string;
36
+ readonly version: number;
37
+ };
38
+ readonly providerApplicationId: string;
39
+ readonly providerVersion: string;
40
+ readonly discoveryId: string;
41
+ readonly resolutionId: string;
42
+ readonly authorization: {
43
+ readonly outcome: "allow";
44
+ readonly grantedScopes?: readonly string[];
45
+ };
46
+ readonly requestedTarget?: MaterializationTarget;
47
+ readonly materialization: AppBoundrySurfaceMaterialization;
48
+ readonly evidence: {
49
+ readonly candidateId: string;
50
+ readonly contractFingerprint: string;
51
+ readonly resolvedEnvironment?: string;
52
+ readonly materializationRequestId?: string;
53
+ };
54
+ }
55
+ export type AppBoundrySurfaceMaterialization = {
56
+ readonly kind: "materializer";
57
+ readonly materializerId: string;
58
+ readonly resolvedTarget: MaterializationTarget;
59
+ readonly request: MaterializationRequest;
60
+ } | {
61
+ readonly kind: "handoff";
62
+ readonly requestedTarget?: MaterializationTarget;
63
+ readonly request?: MaterializationRequest;
64
+ readonly reason: "no_local_materializer" | "no_materialization_resolver" | "artifact_unavailable";
65
+ };
66
+ export type AppBoundrySurfaceUnavailableReason = "discovery_failed" | "not_found" | "unresolved" | "unauthorized" | "ambiguous" | "incompatible_environment" | "materialization_ambiguous";
67
+ export interface AppBoundrySurfaceUnavailableCapability {
68
+ readonly kind: "unavailable";
69
+ readonly capability: {
70
+ readonly name: string;
71
+ readonly version: number;
72
+ };
73
+ readonly reason: AppBoundrySurfaceUnavailableReason;
74
+ readonly message: string;
75
+ readonly discoveryId?: string;
76
+ readonly candidateIds?: readonly string[];
77
+ readonly requestedTarget?: MaterializationTarget;
78
+ readonly providerApplicationIds?: readonly string[];
79
+ }
80
+ export interface AppBoundrySurfaceResolution {
81
+ readonly kind: "surface";
82
+ readonly surfaceId: string;
83
+ readonly request: AppBoundrySurfaceRequest;
84
+ readonly capabilities: readonly AppBoundrySurfaceCapability[];
85
+ readonly unavailable: readonly AppBoundrySurfaceUnavailableCapability[];
86
+ readonly evidence: AppBoundrySurfaceEvidence;
87
+ }
88
+ export declare class AppBoundrySurfaceResolver {
89
+ private readonly discovery;
90
+ private readonly capabilityResolver;
91
+ private readonly materializationResolver?;
92
+ constructor(discovery: CapabilityDiscovery, capabilityResolver: AppBoundryCapabilityResolver, materializationResolver?: AppBoundryMaterializationResolver | undefined);
93
+ resolve(request: AppBoundrySurfaceRequest): Promise<AppBoundrySurfaceResolution>;
94
+ private resolveMaterialization;
95
+ }
96
+ //# sourceMappingURL=appboundry-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appboundry-surface.d.ts","sourceRoot":"","sources":["../src/appboundry-surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * AppBoundry context-aware capability surface resolution.
3
+ *
4
+ * A surface is a presentation-neutral contract describing which requested
5
+ * capabilities can exist for an application in the current context. It composes
6
+ * discovery, authorization, deterministic resolution, and materialization
7
+ * compatibility without rendering UI or executing capabilities.
8
+ */
9
+ import {} from "../../protocol/dist/index.js";
10
+ import { candidateId } from "./appboundry-discovery.js";
11
+ import { AppBoundryCapabilityResolver } from "./appboundry-resolution.js";
12
+ import { AppBoundryMaterializationResolver } from "./appboundry-materialization.js";
13
+ export class AppBoundrySurfaceResolver {
14
+ discovery;
15
+ capabilityResolver;
16
+ materializationResolver;
17
+ constructor(discovery, capabilityResolver, materializationResolver) {
18
+ this.discovery = discovery;
19
+ this.capabilityResolver = capabilityResolver;
20
+ this.materializationResolver = materializationResolver;
21
+ }
22
+ async resolve(request) {
23
+ const capabilities = [];
24
+ const unavailable = [];
25
+ const requestedTarget = request.requestedTarget ?? request.context.environment;
26
+ for (const requirement of request.requirements) {
27
+ const capabilityRequest = createSurfaceCapabilityRequest(request, requirement, requestedTarget);
28
+ const discovery = await this.discovery.discover({ request: capabilityRequest, context: request.context });
29
+ if (discovery.kind !== "discovered") {
30
+ unavailable.push(unavailableFromDiscovery(requirement, requestedTarget, discovery));
31
+ continue;
32
+ }
33
+ const resolution = await this.capabilityResolver.resolve({
34
+ ...capabilityRequest,
35
+ availableCapabilities: discovery.candidates.map((candidate) => candidate.offer),
36
+ discovery: {
37
+ discoveryId: discovery.discoveryId,
38
+ providerIds: discovery.providerIds,
39
+ candidateIds: discovery.candidates.map(candidateId)
40
+ }
41
+ });
42
+ if (resolution.kind !== "resolved") {
43
+ unavailable.push(unavailableFromResolution(requirement, requestedTarget, discovery, resolution));
44
+ continue;
45
+ }
46
+ const declaredTargets = resolution.materialization.declaration?.targets;
47
+ if (requestedTarget && declaredTargets && !declaredTargets.includes(requestedTarget)) {
48
+ unavailable.push({
49
+ kind: "unavailable",
50
+ capability: { name: requirement.name, version: requirement.version },
51
+ reason: "incompatible_environment",
52
+ message: `Capability "${requirement.name}" is not declared for target "${requestedTarget}"`,
53
+ discoveryId: discovery.discoveryId,
54
+ candidateIds: discovery.candidates.map(candidateId),
55
+ requestedTarget,
56
+ providerApplicationIds: [resolution.provider.id]
57
+ });
58
+ continue;
59
+ }
60
+ const materialization = this.resolveMaterialization(request, resolution, requestedTarget);
61
+ if (materialization.kind === "unavailable") {
62
+ unavailable.push(materialization.unavailable);
63
+ continue;
64
+ }
65
+ capabilities.push({
66
+ kind: "available",
67
+ capability: {
68
+ name: resolution.capability.name,
69
+ version: resolution.capability.version
70
+ },
71
+ providerApplicationId: resolution.provider.id,
72
+ providerVersion: resolution.provider.version,
73
+ discoveryId: discovery.discoveryId,
74
+ resolutionId: resolution.resolutionId,
75
+ authorization: resolution.authorization,
76
+ ...(requestedTarget ? { requestedTarget } : {}),
77
+ materialization: materialization.materialization,
78
+ evidence: {
79
+ candidateId: candidateId(discovery.candidates.find((candidate) => candidate.providerId === resolution.provider.id)),
80
+ contractFingerprint: resolution.materialization.contractFingerprint,
81
+ ...(request.context.environment ? { resolvedEnvironment: request.context.environment } : {}),
82
+ ...(materialization.materialization.kind === "materializer"
83
+ ? { materializationRequestId: materialization.materialization.request.requestId }
84
+ : materialization.materialization.request
85
+ ? { materializationRequestId: materialization.materialization.request.requestId }
86
+ : {})
87
+ }
88
+ });
89
+ }
90
+ const surfaceId = createSurfaceId(request, requestedTarget);
91
+ return {
92
+ kind: "surface",
93
+ surfaceId,
94
+ request,
95
+ capabilities,
96
+ unavailable,
97
+ evidence: {
98
+ requestId: request.requestId,
99
+ surfaceId,
100
+ applicationId: request.applicationId,
101
+ ...(request.context.environment ? { environment: request.context.environment } : {}),
102
+ ...(requestedTarget ? { requestedTarget } : {}),
103
+ resolvedAt: new Date().toISOString()
104
+ }
105
+ };
106
+ }
107
+ resolveMaterialization(request, resolution, requestedTarget) {
108
+ const artifact = artifactForResolution(request.artifacts, resolution);
109
+ if (!this.materializationResolver) {
110
+ return {
111
+ kind: "available",
112
+ materialization: { kind: "handoff", requestedTarget, reason: "no_materialization_resolver" }
113
+ };
114
+ }
115
+ if (!artifact) {
116
+ return {
117
+ kind: "available",
118
+ materialization: { kind: "handoff", requestedTarget, reason: "artifact_unavailable" }
119
+ };
120
+ }
121
+ const materialization = this.materializationResolver.resolve({ resolution, artifact, requestedTarget });
122
+ return surfaceMaterializationFromResolution(resolution, materialization);
123
+ }
124
+ }
125
+ function createSurfaceCapabilityRequest(request, requirement, requestedTarget) {
126
+ return {
127
+ requestId: `${request.requestId}::${requirement.name}@${requirement.version}`,
128
+ applicationId: request.applicationId,
129
+ context: request.context,
130
+ requirement,
131
+ ...(requestedTarget ? { materialization: { requestedTarget } } : {})
132
+ };
133
+ }
134
+ function unavailableFromDiscovery(requirement, requestedTarget, discovery) {
135
+ return {
136
+ kind: "unavailable",
137
+ capability: { name: requirement.name, version: requirement.version },
138
+ reason: discovery.kind === "failed" ? "discovery_failed" : "not_found",
139
+ message: discovery.message,
140
+ discoveryId: discovery.discoveryId,
141
+ candidateIds: [],
142
+ ...(requestedTarget ? { requestedTarget } : {})
143
+ };
144
+ }
145
+ function unavailableFromResolution(requirement, requestedTarget, discovery, resolution) {
146
+ const reason = resolution.kind === "denied" ? "unauthorized" : resolution.kind === "ambiguous" ? "ambiguous" : "unresolved";
147
+ const message = resolution.kind === "denied"
148
+ ? resolution.authorization.message
149
+ : resolution.kind === "ambiguous"
150
+ ? resolution.reason
151
+ : resolution.reason;
152
+ return {
153
+ kind: "unavailable",
154
+ capability: { name: requirement.name, version: requirement.version },
155
+ reason,
156
+ message,
157
+ discoveryId: discovery.discoveryId,
158
+ candidateIds: discovery.candidates.map(candidateId),
159
+ ...(requestedTarget ? { requestedTarget } : {}),
160
+ providerApplicationIds: resolution.kind === "denied"
161
+ ? resolution.evaluated.map((candidate) => candidate.offer.provider.id)
162
+ : resolution.kind === "ambiguous"
163
+ ? resolution.candidates.map((candidate) => candidate.offer.provider.id)
164
+ : resolution.candidates.map((candidate) => candidate.provider.id)
165
+ };
166
+ }
167
+ function surfaceMaterializationFromResolution(resolution, materialization) {
168
+ if (materialization.kind === "resolved") {
169
+ return {
170
+ kind: "available",
171
+ materialization: {
172
+ kind: "materializer",
173
+ materializerId: materialization.materializer.id,
174
+ resolvedTarget: materialization.request.requestedTarget,
175
+ request: materialization.request
176
+ }
177
+ };
178
+ }
179
+ if (materialization.kind === "unsupported") {
180
+ return {
181
+ kind: "available",
182
+ materialization: {
183
+ kind: "handoff",
184
+ requestedTarget: materialization.requestedTarget,
185
+ request: materialization.request,
186
+ reason: "no_local_materializer"
187
+ }
188
+ };
189
+ }
190
+ return {
191
+ kind: "unavailable",
192
+ unavailable: {
193
+ kind: "unavailable",
194
+ capability: { name: resolution.capability.name, version: resolution.capability.version },
195
+ reason: "materialization_ambiguous",
196
+ message: materialization.reason,
197
+ discoveryId: resolution.request.discovery?.discoveryId,
198
+ candidateIds: resolution.request.discovery?.candidateIds,
199
+ requestedTarget: materialization.requestedTarget,
200
+ providerApplicationIds: [resolution.provider.id]
201
+ }
202
+ };
203
+ }
204
+ function artifactForResolution(artifacts, resolution) {
205
+ if (!artifacts)
206
+ return undefined;
207
+ if (artifacts instanceof Map) {
208
+ return (artifacts.get(resolution.provider.id) ??
209
+ artifacts.get(`${resolution.capability.name}@${resolution.capability.version}`));
210
+ }
211
+ const record = artifacts;
212
+ return record[resolution.provider.id] ?? record[`${resolution.capability.name}@${resolution.capability.version}`];
213
+ }
214
+ function createSurfaceId(request, requestedTarget) {
215
+ return [
216
+ request.requestId,
217
+ request.applicationId,
218
+ request.context.environment ?? "unknown",
219
+ requestedTarget ?? "any",
220
+ ...request.requirements.map((requirement) => `${requirement.name}@${requirement.versionConstraint ?? requirement.version}`)
221
+ ].join("::");
222
+ }
223
+ //# sourceMappingURL=appboundry-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appboundry-surface.js","sourceRoot":"","sources":["../src/appboundry-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA2D,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EACL,WAAW,EAGZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAI7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,iCAAiC,EAGlC,MAAM,iCAAiC,CAAC;AAgGzC,MAAM,OAAO,yBAAyB;IAEjB;IACA;IACA;IAHnB,YACmB,SAA8B,EAC9B,kBAAgD,EAChD,uBAA2D;QAF3D,cAAS,GAAT,SAAS,CAAqB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAA8B;QAChD,4BAAuB,GAAvB,uBAAuB,CAAoC;IAC3E,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAiC;QAC7C,MAAM,YAAY,GAAkC,EAAE,CAAC;QACvD,MAAM,WAAW,GAA6C,EAAE,CAAC;QACjE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QAE/E,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/C,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;YAChG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1G,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACpC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;gBACpF,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBACvD,GAAG,iBAAiB;gBACpB,qBAAqB,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC/E,SAAS,EAAE;oBACT,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;iBACpD;aACF,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnC,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBACjG,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC;YACxE,IAAI,eAAe,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrF,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE;oBACpE,MAAM,EAAE,0BAA0B;oBAClC,OAAO,EAAE,eAAe,WAAW,CAAC,IAAI,iCAAiC,eAAe,GAAG;oBAC3F,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;oBACnD,eAAe;oBACf,sBAAsB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;iBACjD,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;YAC1F,IAAI,eAAe,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC3C,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE;oBACV,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI;oBAChC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO;iBACvC;gBACD,qBAAqB,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC7C,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO;gBAC5C,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,eAAe,EAAE,eAAe,CAAC,eAAe;gBAChD,QAAQ,EAAE;oBACR,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC;oBACpH,mBAAmB,EAAE,UAAU,CAAC,eAAe,CAAC,mBAAmB;oBACnE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5F,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,KAAK,cAAc;wBACzD,CAAC,CAAC,EAAE,wBAAwB,EAAE,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE;wBACjF,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO;4BACvC,CAAC,CAAC,EAAE,wBAAwB,EAAE,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE;4BACjF,CAAC,CAAC,EAAE,CAAC;iBACV;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC5D,OAAO;YACL,IAAI,EAAE,SAAS;YACf,SAAS;YACT,OAAO;YACP,YAAY;YACZ,WAAW;YACX,QAAQ,EAAE;gBACR,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS;gBACT,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAC5B,OAAiC,EACjC,UAAwC,EACxC,eAAuC;QAIvC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,6BAA6B,EAAE;aAC7F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,sBAAsB,EAAE;aACtF,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;QACxG,OAAO,oCAAoC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;CACF;AAED,SAAS,8BAA8B,CACrC,OAAiC,EACjC,WAAuC,EACvC,eAAuC;IAEvC,OAAO;QACL,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE;QAC7E,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW;QACX,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,WAAuC,EACvC,eAAkD,EAClD,SAAqE;IAErE,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE;QACpE,MAAM,EAAE,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW;QACtE,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,YAAY,EAAE,EAAE;QAChB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,WAAuC,EACvC,eAAkD,EAClD,SAAqE,EACrE,UAAqE;IAErE,MAAM,MAAM,GACV,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/G,MAAM,OAAO,GACX,UAAU,CAAC,IAAI,KAAK,QAAQ;QAC1B,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO;QAClC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW;YAC/B,CAAC,CAAC,UAAU,CAAC,MAAM;YACnB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAC1B,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE;QACpE,MAAM;QACN,OAAO;QACP,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;QACnD,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,sBAAsB,EACpB,UAAU,CAAC,IAAI,KAAK,QAAQ;YAC1B,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtE,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW;gBAC/B,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,UAAwC,EACxC,eAAoD;IAIpD,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,eAAe,EAAE;gBACf,IAAI,EAAE,cAAc;gBACpB,cAAc,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE;gBAC/C,cAAc,EAAE,eAAe,CAAC,OAAO,CAAC,eAAe;gBACvD,OAAO,EAAE,eAAe,CAAC,OAAO;aACjC;SACF,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,eAAe,EAAE;gBACf,IAAI,EAAE,SAAS;gBACf,eAAe,EAAE,eAAe,CAAC,eAAe;gBAChD,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,MAAM,EAAE,uBAAuB;aAChC;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE;YACX,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE;YACxF,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,eAAe,CAAC,MAAM;YAC/B,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW;YACtD,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY;YACxD,eAAe,EAAE,eAAe,CAAC,eAAe;YAChD,sBAAsB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;SACjD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAAsD,EACtD,UAAwC;IAExC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,IAAI,SAAS,YAAY,GAAG,EAAE,CAAC;QAC7B,OAAO,CACL,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAChF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,SAAyD,CAAC;IACzE,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AACpH,CAAC;AAED,SAAS,eAAe,CAAC,OAAiC,EAAE,eAAuC;IACjG,OAAO;QACL,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,aAAa;QACrB,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS;QACxC,eAAe,IAAI,KAAK;QACxB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,iBAAiB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;KAC5H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type AppEventEnvelope, type AppPortManifest, type AppRequest, type AppResponse, type AppStreamRequest, type ApplicationDescriptor, type Principal, type Session, type TransportDescriptor } from "../../protocol/dist/index.d.ts";
1
+ import { type AppEventEnvelope, type AppPortManifest, type AppRequest, type AppResponse, type AppStreamRequest, type ApplicationDescriptor, type MaterializationDeclaration, type Principal, type Session, type TransportDescriptor } from "../../protocol/dist/index.d.ts";
2
2
  import { type Authorizer } from "../../authorization/dist/index.d.ts";
3
3
  import type { AnyCapability, AnyEvent, CapabilityDefinition, EventDefinition } from "./capability.js";
4
4
  import { CapabilityRegistry } from "./registry.js";
@@ -33,6 +33,8 @@ export interface ApplicationOptions {
33
33
  db?: unknown;
34
34
  /** Transports advertised in the manifest (§40). */
35
35
  transports?: TransportDescriptor[];
36
+ /** Protocol declaration of supported materialization targets; AppPort does not select or execute them. */
37
+ materialization?: MaterializationDeclaration;
36
38
  extensions?: string[];
37
39
  /**
38
40
  * Registers the reserved `appport.manifest` and `appport.ping` capabilities so
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@ export class AppPortApplication {
39
39
  #services;
40
40
  #db;
41
41
  #transports;
42
+ #materialization;
42
43
  #extensions;
43
44
  #openStreams = new Set();
44
45
  #closed = false;
@@ -58,6 +59,7 @@ export class AppPortApplication {
58
59
  this.#services = options.services ?? {};
59
60
  this.#db = options.db;
60
61
  this.#transports = options.transports ?? [];
62
+ this.#materialization = options.materialization;
61
63
  this.#extensions = options.extensions ?? [];
62
64
  for (const capability of options.capabilities ?? [])
63
65
  this.registry.register(capability);
@@ -92,6 +94,7 @@ export class AppPortApplication {
92
94
  return this.registry.manifest({
93
95
  application: this.descriptor,
94
96
  transports: [...this.#transports],
97
+ ...(this.#materialization ? { materialization: this.#materialization } : {}),
95
98
  extensions: [...this.#extensions]
96
99
  });
97
100
  }