@appport/sdk 1.1.18 → 1.1.20
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.
- package/package.json +1 -1
- package/vendor/@appport/core/dist/application-conformance.d.ts +68 -0
- package/vendor/@appport/core/dist/application-conformance.d.ts.map +1 -0
- package/vendor/@appport/core/dist/application-conformance.js +108 -0
- package/vendor/@appport/core/dist/application-conformance.js.map +1 -0
- package/vendor/@appport/core/dist/index.d.ts +1 -0
- package/vendor/@appport/core/dist/index.d.ts.map +1 -1
- package/vendor/@appport/core/dist/index.js +1 -0
- package/vendor/@appport/core/dist/index.js.map +1 -1
- package/vendor/@appport/core/dist/public.d.ts +3 -0
- package/vendor/@appport/core/dist/public.d.ts.map +1 -1
- package/vendor/@appport/core/dist/public.js +3 -0
- package/vendor/@appport/core/dist/public.js.map +1 -1
- package/vendor/@appport/mcp/dist/index.d.ts +1 -0
- package/vendor/@appport/mcp/dist/index.d.ts.map +1 -1
- package/vendor/@appport/mcp/dist/index.js +2 -1
- package/vendor/@appport/mcp/dist/index.js.map +1 -1
- package/vendor/@appport/core/dist/repository-connection.d.ts +0 -100
- package/vendor/@appport/core/dist/repository-connection.d.ts.map +0 -1
- package/vendor/@appport/core/dist/repository-connection.js +0 -57
- package/vendor/@appport/core/dist/repository-connection.js.map +0 -1
package/package.json
CHANGED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppBoundry Application Conformance
|
|
3
|
+
*
|
|
4
|
+
* Answers one question deterministically, from the artifact alone:
|
|
5
|
+
*
|
|
6
|
+
* Is this an AppBoundry application?
|
|
7
|
+
*
|
|
8
|
+
* The check never inspects a source repository, implementation language,
|
|
9
|
+
* compiler, framework, build system, package manager, README, SDK, or protocol
|
|
10
|
+
* surface. It reads the packaged manifest and the artifact bytes, and nothing
|
|
11
|
+
* else.
|
|
12
|
+
*
|
|
13
|
+
* This is not a second validator. Every membership dimension delegates to the
|
|
14
|
+
* existing authoritative check:
|
|
15
|
+
*
|
|
16
|
+
* identity + manifest shape → parseApplicationPackageManifest
|
|
17
|
+
* artifact hash consistency → resolveApplicationPackageMetadata
|
|
18
|
+
* contract + fingerprint → parseAppBoundryContract
|
|
19
|
+
*
|
|
20
|
+
* One dimension had no existing check and is added here: whether the declared
|
|
21
|
+
* bytes are actually an executable module. Publication, resolution and
|
|
22
|
+
* deployment all verify the artifact's *hash* without ever compiling it, which
|
|
23
|
+
* is how a well-formed manifest can accompany bytes that no runtime can
|
|
24
|
+
* instantiate.
|
|
25
|
+
*/
|
|
26
|
+
export declare const APPLICATION_CONFORMANCE_PROTOCOL: "AppBoundry/application-conformance/1";
|
|
27
|
+
/**
|
|
28
|
+
* Membership failures, one per independently testable boundary.
|
|
29
|
+
*
|
|
30
|
+
* Codes are deliberately not a superset of every internal error: a failure is
|
|
31
|
+
* classified by the contract it violates, so a caller can act on it.
|
|
32
|
+
*/
|
|
33
|
+
export type ConformanceFailureCode = "MANIFEST_INVALID" | "ARTIFACT_HASH_MISMATCH" | "ARTIFACT_NOT_EXECUTABLE" | "CAPABILITY_INVALID";
|
|
34
|
+
export interface ConformanceCheck {
|
|
35
|
+
readonly name: string;
|
|
36
|
+
readonly status: "PASS" | "FAIL";
|
|
37
|
+
readonly code?: ConformanceFailureCode;
|
|
38
|
+
readonly evidence?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ConformanceReport {
|
|
41
|
+
readonly protocol: typeof APPLICATION_CONFORMANCE_PROTOCOL;
|
|
42
|
+
readonly status: "CONFORMING" | "NON_CONFORMING";
|
|
43
|
+
readonly applicationId?: string;
|
|
44
|
+
readonly packageIdentity?: string;
|
|
45
|
+
readonly artifactHash?: string;
|
|
46
|
+
readonly checks: readonly ConformanceCheck[];
|
|
47
|
+
/** Codes of every violated contract, in check order. */
|
|
48
|
+
readonly failures: readonly ConformanceFailureCode[];
|
|
49
|
+
}
|
|
50
|
+
export interface ConformanceInput {
|
|
51
|
+
/** The packaged `.app` manifest, as parsed JSON or as its text. */
|
|
52
|
+
readonly manifest: unknown;
|
|
53
|
+
/** The bytes the manifest declares as its artifact. */
|
|
54
|
+
readonly artifact: Uint8Array;
|
|
55
|
+
}
|
|
56
|
+
/** The artifact format the runtime admits. Not a language or a toolchain. */
|
|
57
|
+
export declare const CONFORMING_ARTIFACT_FORMAT: "wasm/1";
|
|
58
|
+
/**
|
|
59
|
+
* Decide membership from the artifact and its declared contract.
|
|
60
|
+
*
|
|
61
|
+
* Checks run in dependency order and later checks are skipped once their input
|
|
62
|
+
* is known invalid, so a report never contains failures that are merely
|
|
63
|
+
* consequences of an earlier one.
|
|
64
|
+
*/
|
|
65
|
+
export declare function assessApplicationConformance(input: ConformanceInput): Promise<ConformanceReport>;
|
|
66
|
+
/** True when the artifact satisfies every membership contract. */
|
|
67
|
+
export declare function isConforming(report: ConformanceReport): boolean;
|
|
68
|
+
//# sourceMappingURL=application-conformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-conformance.d.ts","sourceRoot":"","sources":["../src/application-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,eAAO,MAAM,gCAAgC,EAAG,sCAA+C,CAAC;AAEhG;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAC9B,kBAAkB,GAClB,wBAAwB,GACxB,yBAAyB,GACzB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,gCAAgC,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;CAC/B;AAED,6EAA6E;AAC7E,eAAO,MAAM,0BAA0B,EAAG,QAAiB,CAAC;AAI5D;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8DtG;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAE/D"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppBoundry Application Conformance
|
|
3
|
+
*
|
|
4
|
+
* Answers one question deterministically, from the artifact alone:
|
|
5
|
+
*
|
|
6
|
+
* Is this an AppBoundry application?
|
|
7
|
+
*
|
|
8
|
+
* The check never inspects a source repository, implementation language,
|
|
9
|
+
* compiler, framework, build system, package manager, README, SDK, or protocol
|
|
10
|
+
* surface. It reads the packaged manifest and the artifact bytes, and nothing
|
|
11
|
+
* else.
|
|
12
|
+
*
|
|
13
|
+
* This is not a second validator. Every membership dimension delegates to the
|
|
14
|
+
* existing authoritative check:
|
|
15
|
+
*
|
|
16
|
+
* identity + manifest shape → parseApplicationPackageManifest
|
|
17
|
+
* artifact hash consistency → resolveApplicationPackageMetadata
|
|
18
|
+
* contract + fingerprint → parseAppBoundryContract
|
|
19
|
+
*
|
|
20
|
+
* One dimension had no existing check and is added here: whether the declared
|
|
21
|
+
* bytes are actually an executable module. Publication, resolution and
|
|
22
|
+
* deployment all verify the artifact's *hash* without ever compiling it, which
|
|
23
|
+
* is how a well-formed manifest can accompany bytes that no runtime can
|
|
24
|
+
* instantiate.
|
|
25
|
+
*/
|
|
26
|
+
import { parseApplicationPackageManifest, resolveApplicationPackageMetadata, APPPORT_APPLICATION_PACKAGE_ARTIFACT_FILE } from "./application-package.js";
|
|
27
|
+
export const APPLICATION_CONFORMANCE_PROTOCOL = "AppBoundry/application-conformance/1";
|
|
28
|
+
/** The artifact format the runtime admits. Not a language or a toolchain. */
|
|
29
|
+
export const CONFORMING_ARTIFACT_FORMAT = "wasm/1";
|
|
30
|
+
const describe = (error) => error instanceof Error ? error.message : String(error);
|
|
31
|
+
/**
|
|
32
|
+
* Decide membership from the artifact and its declared contract.
|
|
33
|
+
*
|
|
34
|
+
* Checks run in dependency order and later checks are skipped once their input
|
|
35
|
+
* is known invalid, so a report never contains failures that are merely
|
|
36
|
+
* consequences of an earlier one.
|
|
37
|
+
*/
|
|
38
|
+
export async function assessApplicationConformance(input) {
|
|
39
|
+
const checks = [];
|
|
40
|
+
const pass = (name, evidence) => { checks.push({ name, status: "PASS", ...(evidence ? { evidence } : {}) }); };
|
|
41
|
+
const fail = (name, code, evidence) => { checks.push({ name, status: "FAIL", code, evidence }); };
|
|
42
|
+
const report = (manifest, artifactHash) => ({
|
|
43
|
+
protocol: APPLICATION_CONFORMANCE_PROTOCOL,
|
|
44
|
+
status: checks.some(check => check.status === "FAIL") ? "NON_CONFORMING" : "CONFORMING",
|
|
45
|
+
...(manifest ? { applicationId: manifest.application.id, packageIdentity: manifest.packageIdentity.contentAddress } : {}),
|
|
46
|
+
...(artifactHash ? { artifactHash } : {}),
|
|
47
|
+
checks,
|
|
48
|
+
failures: checks.flatMap(check => check.code ? [check.code] : [])
|
|
49
|
+
});
|
|
50
|
+
// 1. Manifest shape and self-addressing identity. The existing parser
|
|
51
|
+
// recomputes the package identity, so a tampered manifest fails here.
|
|
52
|
+
let manifest;
|
|
53
|
+
try {
|
|
54
|
+
manifest = parseApplicationPackageManifest(input.manifest);
|
|
55
|
+
pass("application package manifest", manifest.packageIdentity.contentAddress);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
fail("application package manifest", "MANIFEST_INVALID", describe(error));
|
|
59
|
+
return report();
|
|
60
|
+
}
|
|
61
|
+
// 2. Manifest/artifact consistency, through the existing resolver.
|
|
62
|
+
let artifactHash;
|
|
63
|
+
try {
|
|
64
|
+
artifactHash = resolveApplicationPackageMetadata({ manifest: input.manifest, artifact: input.artifact }).artifactHash;
|
|
65
|
+
pass("artifact matches its declared hash", artifactHash);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
fail("artifact matches its declared hash", "ARTIFACT_HASH_MISMATCH", describe(error));
|
|
69
|
+
}
|
|
70
|
+
// 3. The bytes are actually an executable module. No other layer checks this:
|
|
71
|
+
// publication, resolution and deployment verify the hash and stop there.
|
|
72
|
+
try {
|
|
73
|
+
await WebAssembly.compile(Uint8Array.from(input.artifact));
|
|
74
|
+
pass("artifact is an executable module");
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
fail("artifact is an executable module", "ARTIFACT_NOT_EXECUTABLE", describe(error));
|
|
78
|
+
}
|
|
79
|
+
// 4. Every declared capability is operable: a caller must be able to learn
|
|
80
|
+
// what to send, what comes back, and what authority it needs.
|
|
81
|
+
const capabilityFailures = [];
|
|
82
|
+
for (const capability of manifest.contract.provides) {
|
|
83
|
+
const reference = `${capability.name}@${capability.version}`;
|
|
84
|
+
if (capability.kind !== "request" && capability.kind !== "stream")
|
|
85
|
+
capabilityFailures.push(`${reference}: kind must be request or stream`);
|
|
86
|
+
for (const schema of ["inputSchema", "outputSchema"]) {
|
|
87
|
+
const value = capability[schema];
|
|
88
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
89
|
+
capabilityFailures.push(`${reference}: ${schema} must be a schema object`);
|
|
90
|
+
}
|
|
91
|
+
const authorization = capability["authorization"];
|
|
92
|
+
if (!Array.isArray(authorization) || authorization.some(scope => typeof scope !== "string" || !scope.length)) {
|
|
93
|
+
capabilityFailures.push(`${reference}: authorization must be an array of non-empty scopes`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (manifest.contract.provides.length === 0)
|
|
97
|
+
capabilityFailures.push("the contract declares no capabilities");
|
|
98
|
+
if (capabilityFailures.length === 0)
|
|
99
|
+
pass("capabilities are operable", `${manifest.contract.provides.length} declared`);
|
|
100
|
+
else
|
|
101
|
+
fail("capabilities are operable", "CAPABILITY_INVALID", capabilityFailures.join("; "));
|
|
102
|
+
return report(manifest, artifactHash);
|
|
103
|
+
}
|
|
104
|
+
/** True when the artifact satisfies every membership contract. */
|
|
105
|
+
export function isConforming(report) {
|
|
106
|
+
return report.status === "CONFORMING";
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=application-conformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-conformance.js","sourceRoot":"","sources":["../src/application-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,EACjC,yCAAyC,EAE1C,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,gCAAgC,GAAG,sCAA+C,CAAC;AAuChG,6EAA6E;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAAuB;IACxE,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,QAAiB,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChI,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAA4B,EAAE,QAAgB,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1I,MAAM,MAAM,GAAG,CAAC,QAA4C,EAAE,YAAqB,EAAqB,EAAE,CAAC,CAAC;QAC1G,QAAQ,EAAE,gCAAgC;QAC1C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY;QACvF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzH,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM;QACN,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC,CAAC;IAEH,sEAAsE;IACtE,yEAAyE;IACzE,IAAI,QAA2C,CAAC;IAChD,IAAI,CAAC;QACH,QAAQ,GAAG,+BAA+B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,8BAA8B,EAAE,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,8BAA8B,EAAE,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,mEAAmE;IACnE,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC;QACH,YAAY,GAAG,iCAAiC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC;QACtH,IAAI,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,oCAAoC,EAAE,wBAAwB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,kCAAkC,EAAE,yBAAyB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,2EAA2E;IAC3E,iEAAiE;IACjE,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7D,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ;YAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,kCAAkC,CAAC,CAAC;QAC3I,KAAK,MAAM,MAAM,IAAI,CAAC,aAAa,EAAE,cAAc,CAAU,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAI,UAAiD,CAAC,MAAM,CAAC,CAAC;YACzE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,MAAM,0BAA0B,CAAC,CAAC;QAC9I,CAAC;QACD,MAAM,aAAa,GAAI,UAAiD,CAAC,eAAe,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7G,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,sDAAsD,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,kBAAkB,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC9G,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,2BAA2B,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;;QACnH,IAAI,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5F,OAAO,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,MAAyB;IACpD,OAAO,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC;AACxC,CAAC"}
|
|
@@ -22,6 +22,7 @@ export * from "./assembly.js";
|
|
|
22
22
|
export * from "./manifest.js";
|
|
23
23
|
export * from "./contract-artifact.js";
|
|
24
24
|
export * from "./application-package.js";
|
|
25
|
+
export * from "./application-conformance.js";
|
|
25
26
|
export * from "./application.js";
|
|
26
27
|
export * from "./state.js";
|
|
27
28
|
export * from "./application-lifecycle.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -22,6 +22,7 @@ export * from "./assembly.js";
|
|
|
22
22
|
export * from "./manifest.js";
|
|
23
23
|
export * from "./contract-artifact.js";
|
|
24
24
|
export * from "./application-package.js";
|
|
25
|
+
export * from "./application-conformance.js";
|
|
25
26
|
export * from "./application.js";
|
|
26
27
|
export * from "./state.js";
|
|
27
28
|
export * from "./application-lifecycle.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
|
|
@@ -12,9 +12,12 @@ export * from "./context.js";
|
|
|
12
12
|
export * from "./implementation.js";
|
|
13
13
|
export * from "./manifest.js";
|
|
14
14
|
export * from "./contract-artifact.js";
|
|
15
|
+
export * from "./application-package.js";
|
|
15
16
|
export * from "./appboundry-contract.js";
|
|
16
17
|
export * from "./runtime-manifest.js";
|
|
17
18
|
export * from "./streams.js";
|
|
18
19
|
export type { CapabilityInvocationContext, CapabilityInvocationRequest, CapabilityInvocationResult, CancelledInvocationResult, FailedInvocationResult, SuccessfulInvocationResult, TimedOutInvocationResult } from "./invocation.js";
|
|
19
20
|
export * from "./appboundry-capability-catalog.js";
|
|
21
|
+
export * from "./appboundry-operation-discovery.js";
|
|
22
|
+
export * from "./appboundry-migration.js";
|
|
20
23
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,YAAY,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,cAAc,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,YAAY,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC"}
|
|
@@ -12,8 +12,11 @@ export * from "./context.js";
|
|
|
12
12
|
export * from "./implementation.js";
|
|
13
13
|
export * from "./manifest.js";
|
|
14
14
|
export * from "./contract-artifact.js";
|
|
15
|
+
export * from "./application-package.js";
|
|
15
16
|
export * from "./appboundry-contract.js";
|
|
16
17
|
export * from "./runtime-manifest.js";
|
|
17
18
|
export * from "./streams.js";
|
|
18
19
|
export * from "./appboundry-capability-catalog.js";
|
|
20
|
+
export * from "./appboundry-operation-discovery.js";
|
|
21
|
+
export * from "./appboundry-migration.js";
|
|
19
22
|
//# sourceMappingURL=public.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAW7B,cAAc,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAW7B,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEzE,iFAAiF;AACjF,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,yEAAyE;IACzE,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEzE,iFAAiF;AACjF,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,yEAAyE;IACzE,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,EAAE,UAAU,CAAA;KAAE,CAAC;CACtG;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC;IACtD,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,EAAE,CAmB/F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,OAAO,EAAE,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/D;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,GAAE,eAAoB,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,SAAS,CAiCX;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD"}
|
|
@@ -31,7 +31,8 @@ export function toMcpTools(manifest, options = {}) {
|
|
|
31
31
|
_appport: {
|
|
32
32
|
capability: entry.name,
|
|
33
33
|
version: entry.latestVersion,
|
|
34
|
-
authorization: entry.authorization
|
|
34
|
+
authorization: entry.authorization,
|
|
35
|
+
outputSchema: entry.outputSchema
|
|
35
36
|
}
|
|
36
37
|
}));
|
|
37
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EAIb,MAAM,mBAAmB,CAAC;AA+B3B,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,MAAe;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAe;IACxD,MAAM,aAAa,GAAG,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrG,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,QAAyB,EAAE,UAA4B,EAAE;IAClF,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;IACzD,OAAO,QAAQ,CAAC,YAAY;SACzB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;SAC3C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SACxE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;SACnD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;QAC5C,WAAW,EACT,KAAK,CAAC,WAAW;YACjB,eAAe,KAAK,CAAC,IAAI,kBAAkB,QAAQ,CAAC,WAAW,CAAC,IAAI,aAAa,KAAK,CAAC,aAAa,IAAI;QAC1G,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE;YACR,UAAU,EAAE,KAAK,CAAC,IAAI;YACtB,OAAO,EAAE,KAAK,CAAC,aAAa;YAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { type ApplicationManifest } from "./manifest.js";
|
|
2
|
-
export type RepositoryConnectionMethod = "github" | "git-ci" | "local";
|
|
3
|
-
export type RepositoryConnectionStatus = "CONNECTED" | "MISMATCHED" | "DISCONNECTED";
|
|
4
|
-
export interface RepositoryIdentity {
|
|
5
|
-
readonly provider: "github" | "git" | "local";
|
|
6
|
-
readonly repositoryId?: string;
|
|
7
|
-
readonly owner?: string;
|
|
8
|
-
readonly name?: string;
|
|
9
|
-
readonly remoteUrl: string;
|
|
10
|
-
}
|
|
11
|
-
export interface ImplementedCapability {
|
|
12
|
-
readonly name: string;
|
|
13
|
-
readonly version: number;
|
|
14
|
-
}
|
|
15
|
-
export interface CapabilityImplementationAttestation {
|
|
16
|
-
readonly implementationId: string;
|
|
17
|
-
readonly sourceConnectionId: string;
|
|
18
|
-
readonly capabilityName: string;
|
|
19
|
-
readonly capabilityVersion: number;
|
|
20
|
-
}
|
|
21
|
-
export interface RepositoryObservation {
|
|
22
|
-
readonly repository: RepositoryIdentity;
|
|
23
|
-
readonly ref: string;
|
|
24
|
-
readonly commitSha?: string;
|
|
25
|
-
readonly manifest: ApplicationManifest;
|
|
26
|
-
readonly implementedCapabilities?: readonly ImplementedCapability[];
|
|
27
|
-
}
|
|
28
|
-
export interface RepositoryVerification {
|
|
29
|
-
readonly verificationId: string;
|
|
30
|
-
readonly verifiedAt: string;
|
|
31
|
-
readonly observedFingerprint: string;
|
|
32
|
-
readonly authoritativeFingerprint: string;
|
|
33
|
-
readonly identityMatches: boolean;
|
|
34
|
-
readonly contractMatches: boolean;
|
|
35
|
-
readonly reasons: readonly string[];
|
|
36
|
-
}
|
|
37
|
-
export interface RepositoryConnectionEvent {
|
|
38
|
-
readonly eventId: string;
|
|
39
|
-
readonly sequence: number;
|
|
40
|
-
readonly type: "CONNECTED" | "VERIFICATION_FAILED" | "REVERIFIED" | "DISCONNECTED";
|
|
41
|
-
readonly occurredAt: string;
|
|
42
|
-
readonly status: RepositoryConnectionStatus;
|
|
43
|
-
readonly observedFingerprint: string;
|
|
44
|
-
}
|
|
45
|
-
export interface RepositoryConnectionRecord {
|
|
46
|
-
readonly connectionId: string;
|
|
47
|
-
readonly applicationId: string;
|
|
48
|
-
readonly method: RepositoryConnectionMethod;
|
|
49
|
-
readonly status: RepositoryConnectionStatus;
|
|
50
|
-
readonly sequence: number;
|
|
51
|
-
readonly repository: RepositoryIdentity;
|
|
52
|
-
readonly ref: string;
|
|
53
|
-
readonly commitSha?: string;
|
|
54
|
-
readonly implementations: readonly CapabilityImplementationAttestation[];
|
|
55
|
-
readonly contractFingerprint: string;
|
|
56
|
-
readonly observedFingerprint: string;
|
|
57
|
-
readonly lastVerifiedAt: string;
|
|
58
|
-
readonly verification: RepositoryVerification;
|
|
59
|
-
readonly history: readonly RepositoryConnectionEvent[];
|
|
60
|
-
}
|
|
61
|
-
export interface RepositoryConnectionStore {
|
|
62
|
-
get(applicationId: string, connectionId: string): Promise<RepositoryConnectionRecord | undefined>;
|
|
63
|
-
put(record: RepositoryConnectionRecord, expectedSequence?: number): Promise<void>;
|
|
64
|
-
list(applicationId?: string): Promise<RepositoryConnectionRecord[]>;
|
|
65
|
-
}
|
|
66
|
-
export interface AuthoritativeApplicationContract {
|
|
67
|
-
get(applicationId: string): Promise<{
|
|
68
|
-
fingerprint: string;
|
|
69
|
-
manifest: ApplicationManifest;
|
|
70
|
-
} | undefined>;
|
|
71
|
-
}
|
|
72
|
-
export declare class RepositoryConnectionConflictError extends Error {
|
|
73
|
-
constructor(id: string);
|
|
74
|
-
}
|
|
75
|
-
export declare class MemoryRepositoryConnectionStore implements RepositoryConnectionStore {
|
|
76
|
-
#private;
|
|
77
|
-
get(applicationId: string, connectionId: string): Promise<RepositoryConnectionRecord | undefined>;
|
|
78
|
-
put(record: RepositoryConnectionRecord, expected?: number): Promise<void>;
|
|
79
|
-
list(applicationId?: string): Promise<RepositoryConnectionRecord[]>;
|
|
80
|
-
}
|
|
81
|
-
/** Manufactures connection facts only after comparing repository evidence with authority. */
|
|
82
|
-
export declare class RepositoryConnectionOperations {
|
|
83
|
-
private readonly store;
|
|
84
|
-
private readonly authority;
|
|
85
|
-
private readonly now;
|
|
86
|
-
constructor(store: RepositoryConnectionStore, authority: AuthoritativeApplicationContract, now?: () => string);
|
|
87
|
-
connect(applicationId: string, method: RepositoryConnectionMethod, observation: RepositoryObservation): Promise<RepositoryConnectionRecord>;
|
|
88
|
-
verify(applicationId: string, connectionId: string, observation: RepositoryObservation): Promise<RepositoryConnectionRecord>;
|
|
89
|
-
disconnect(applicationId: string, connectionId: string): Promise<RepositoryConnectionRecord>;
|
|
90
|
-
get: (applicationId: string, connectionId: string) => Promise<RepositoryConnectionRecord | undefined>;
|
|
91
|
-
list: (applicationId?: string) => Promise<RepositoryConnectionRecord[]>;
|
|
92
|
-
private check;
|
|
93
|
-
private verification;
|
|
94
|
-
private event;
|
|
95
|
-
private required;
|
|
96
|
-
private validateRepository;
|
|
97
|
-
private implementations;
|
|
98
|
-
private implementation;
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=repository-connection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository-connection.d.ts","sourceRoot":"","sources":["../src/repository-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { fingerprintManifest } from "./manifest.js";
|
|
3
|
-
export class RepositoryConnectionConflictError extends Error {
|
|
4
|
-
constructor(id) { super(`Concurrent repository connection update rejected for "${id}"`); this.name = "RepositoryConnectionConflictError"; }
|
|
5
|
-
}
|
|
6
|
-
export class MemoryRepositoryConnectionStore {
|
|
7
|
-
#records = new Map();
|
|
8
|
-
async get(applicationId, connectionId) { const value = this.#records.get(`${applicationId}:${connectionId}`); return value && structuredClone(value); }
|
|
9
|
-
async put(record, expected) { const key = `${record.applicationId}:${record.connectionId}`, current = this.#records.get(key); if (current?.sequence !== expected)
|
|
10
|
-
throw new RepositoryConnectionConflictError(record.connectionId); this.#records.set(key, structuredClone(record)); }
|
|
11
|
-
async list(applicationId) { return [...this.#records.values()].filter(item => !applicationId || item.applicationId === applicationId).map(item => structuredClone(item)); }
|
|
12
|
-
}
|
|
13
|
-
/** Manufactures connection facts only after comparing repository evidence with authority. */
|
|
14
|
-
export class RepositoryConnectionOperations {
|
|
15
|
-
store;
|
|
16
|
-
authority;
|
|
17
|
-
now;
|
|
18
|
-
constructor(store, authority, now = () => new Date().toISOString()) {
|
|
19
|
-
this.store = store;
|
|
20
|
-
this.authority = authority;
|
|
21
|
-
this.now = now;
|
|
22
|
-
}
|
|
23
|
-
async connect(applicationId, method, observation) {
|
|
24
|
-
this.validateRepository(method, observation.repository);
|
|
25
|
-
const implementedCapabilities = this.implementations(observation), checked = await this.check(applicationId, observation.manifest, implementedCapabilities), at = this.now(), connectionId = `conn_${randomUUID()}`, status = checked.reasons.length ? "MISMATCHED" : "CONNECTED";
|
|
26
|
-
const implementations = status === "CONNECTED" ? implementedCapabilities.map(item => this.implementation(connectionId, item)) : [], verification = this.verification(checked, at), record = { connectionId, applicationId, method, status, sequence: 1, repository: structuredClone(observation.repository), ref: observation.ref, ...(observation.commitSha ? { commitSha: observation.commitSha } : {}), implementations, contractFingerprint: checked.authoritativeFingerprint, observedFingerprint: checked.observedFingerprint, lastVerifiedAt: at, verification, history: [this.event(1, status === "CONNECTED" ? "CONNECTED" : "VERIFICATION_FAILED", status, checked.observedFingerprint, at)] };
|
|
27
|
-
await this.store.put(record);
|
|
28
|
-
return record;
|
|
29
|
-
}
|
|
30
|
-
async verify(applicationId, connectionId, observation) {
|
|
31
|
-
const current = await this.required(applicationId, connectionId);
|
|
32
|
-
if (current.status === "DISCONNECTED")
|
|
33
|
-
throw new Error("A disconnected repository must be reconnected with a new connection");
|
|
34
|
-
if (JSON.stringify(current.repository) !== JSON.stringify(observation.repository))
|
|
35
|
-
throw new Error("Verification cannot change repository identity");
|
|
36
|
-
const implementedCapabilities = this.implementations(observation), checked = await this.check(applicationId, observation.manifest, implementedCapabilities), at = this.now(), status = checked.reasons.length ? "MISMATCHED" : "CONNECTED", sequence = current.sequence + 1;
|
|
37
|
-
const implementations = status === "CONNECTED" ? implementedCapabilities.map(item => current.implementations.find(existing => existing.capabilityName === item.name && existing.capabilityVersion === item.version) ?? this.implementation(connectionId, item)) : [], next = { ...current, status, sequence, ref: observation.ref, ...(observation.commitSha ? { commitSha: observation.commitSha } : {}), implementations, contractFingerprint: checked.authoritativeFingerprint, observedFingerprint: checked.observedFingerprint, lastVerifiedAt: at, verification: this.verification(checked, at), history: [...current.history, this.event(sequence, status === "CONNECTED" ? "REVERIFIED" : "VERIFICATION_FAILED", status, checked.observedFingerprint, at)] };
|
|
38
|
-
await this.store.put(next, current.sequence);
|
|
39
|
-
return next;
|
|
40
|
-
}
|
|
41
|
-
async disconnect(applicationId, connectionId) { const current = await this.required(applicationId, connectionId); if (current.status === "DISCONNECTED")
|
|
42
|
-
return current; const at = this.now(), sequence = current.sequence + 1, next = { ...current, status: "DISCONNECTED", sequence, history: [...current.history, this.event(sequence, "DISCONNECTED", "DISCONNECTED", current.observedFingerprint, at)] }; await this.store.put(next, current.sequence); return next; }
|
|
43
|
-
get = (applicationId, connectionId) => this.store.get(applicationId, connectionId);
|
|
44
|
-
list = (applicationId) => this.store.list(applicationId);
|
|
45
|
-
async check(applicationId, manifest, implementations) { const authoritative = await this.authority.get(applicationId); if (!authoritative)
|
|
46
|
-
throw new Error(`Unknown application "${applicationId}"`); const observedFingerprint = fingerprintManifest(manifest), identityMatches = manifest.application.id === applicationId, contractMatches = observedFingerprint === authoritative.fingerprint, declared = new Set(authoritative.manifest.provides.map(item => `${item.name}@${item.version}`)), invalid = implementations.filter(item => !declared.has(`${item.name}@${item.version}`)), reasons = [...(!identityMatches ? ["Application identity does not match"] : []), ...(!contractMatches ? ["Contract fingerprint does not match"] : []), ...(invalid.length ? [`Implementation claims are outside the application contract: ${invalid.map(item => `${item.name}@${item.version}`).join(", ")}`] : [])]; return { authoritativeFingerprint: authoritative.fingerprint, observedFingerprint, identityMatches, contractMatches: contractMatches && invalid.length === 0, reasons }; }
|
|
47
|
-
verification(checked, at) { return { verificationId: `verify_${randomUUID()}`, verifiedAt: at, ...checked }; }
|
|
48
|
-
event(sequence, type, status, observedFingerprint, occurredAt) { return { eventId: `repo_${randomUUID()}`, sequence, type, occurredAt, status, observedFingerprint }; }
|
|
49
|
-
async required(applicationId, connectionId) { const value = await this.store.get(applicationId, connectionId); if (!value)
|
|
50
|
-
throw new Error(`Unknown repository connection "${connectionId}"`); return value; }
|
|
51
|
-
validateRepository(method, repository) { if (!repository.remoteUrl || !repository.remoteUrl.trim())
|
|
52
|
-
throw new Error("Repository remoteUrl is required"); if (method === "github" && (repository.provider !== "github" || !repository.repositoryId))
|
|
53
|
-
throw new Error("GitHub connections require authenticated repository identity"); }
|
|
54
|
-
implementations(observation) { const values = observation.implementedCapabilities ?? observation.manifest.provides.map(({ name, version }) => ({ name, version })), unique = new Map(values.map(item => [`${item.name}@${item.version}`, { name: item.name, version: item.version }])); return [...unique.values()].sort((a, b) => a.name.localeCompare(b.name) || a.version - b.version); }
|
|
55
|
-
implementation(connectionId, capability) { return { implementationId: `impl_${randomUUID()}`, sourceConnectionId: connectionId, capabilityName: capability.name, capabilityVersion: capability.version }; }
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=repository-connection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository-connection.js","sourceRoot":"","sources":["../src/repository-connection.ts"],"names":[],"mappings":"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"}
|