@amaster.ai/employee-runtime-connector 0.1.1-beta.142 → 0.1.1-beta.144
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/README.md
CHANGED
|
@@ -33,9 +33,13 @@ The publish workflow verifies that npm records the publishing commit as the pack
|
|
|
33
33
|
|
|
34
34
|
## Package Contents
|
|
35
35
|
|
|
36
|
+
## Pi plugin ownership boundary
|
|
37
|
+
|
|
38
|
+
`pi-cli-runtime` owns Pi plugin installation, versions, package resolution, and configuration. The connector must only start Pi, deliver a command, manage its process lifecycle, and return its result. Do not add Pi-plugin package/version/digest/schema/config checks to connector registration, heartbeat, capability advertisement, or command dispatch. A plugin failure is task execution evidence, not a connector admission decision.
|
|
39
|
+
|
|
36
40
|
- `dist/amaster-runtime.mjs`: configuration, pairing, workspace, diagnostics, and daemon lifecycle CLI.
|
|
37
41
|
- `dist/amaster-runtime-daemon.mjs`: standalone daemon bundle for connector registration, heartbeat, command execution, and result ingestion.
|
|
38
|
-
- `dist/source-acquisition-compatibility.json`: versioned Source Acquisition
|
|
42
|
+
- `dist/source-acquisition-compatibility.json`: versioned Source Acquisition protocol and failure-classification manifest. It does not constrain Pi plugin packages, versions, or configuration.
|
|
39
43
|
|
|
40
44
|
Source executor diagnostics remain inside the complete run result JSON for authorized Server/read-surface handling. They contain only manifest-allowlisted failure and reason codes plus bounded phase/retry/start-state fields; raw error messages, arbitrary error codes, paths, locators, stdout, and stderr are not part of that contract. This Connector-only slice does not add a Company Sources client projection.
|
|
41
45
|
|
|
@@ -4071,9 +4071,6 @@ var source_acquisition_compatibility_default = {
|
|
|
4071
4071
|
adapters: [
|
|
4072
4072
|
"pi_browser_use_headless_v1"
|
|
4073
4073
|
],
|
|
4074
|
-
requiredPackages: {
|
|
4075
|
-
"@amaster.ai/pi-browser-use": "0.1.2-beta.61"
|
|
4076
|
-
},
|
|
4077
4074
|
failureClassification: {
|
|
4078
4075
|
phases: [
|
|
4079
4076
|
"source_profile",
|
|
@@ -4229,9 +4226,6 @@ var SOURCE_ACQUISITION_PUBLIC_TOOLS = [
|
|
|
4229
4226
|
"runtime_action.status"
|
|
4230
4227
|
];
|
|
4231
4228
|
var SOURCE_ACQUISITION_AUTHENTICATED_TOOLS = SOURCE_ACQUISITION_PUBLIC_TOOLS;
|
|
4232
|
-
var SOURCE_ACQUISITION_REQUIRED_PACKAGES = Object.freeze(
|
|
4233
|
-
source_acquisition_compatibility_default.requiredPackages
|
|
4234
|
-
);
|
|
4235
4229
|
|
|
4236
4230
|
// ../shared/src/company-source-locator.ts
|
|
4237
4231
|
var CREDENTIAL_QUERY_KEY = /(?:^|[_-])(?:access_?token|api_?key|auth(?:orization)?|client_?secret|credential|jwt|oauth|password|secret|session|signature|signed|sig|token)(?:$|[_-])/iu;
|
|
@@ -4459,11 +4453,6 @@ var sourceAcquisitionLimitsSchema = external_exports.object({
|
|
|
4459
4453
|
maxSummaryChars: external_exports.number().int().min(1e3).max(5e5)
|
|
4460
4454
|
}).strict();
|
|
4461
4455
|
var sourceAcquisitionDigestSchema = external_exports.string().regex(/^[a-f0-9]{64}$/u);
|
|
4462
|
-
var sourceAcquisitionBrowserDependencySchema = external_exports.object({
|
|
4463
|
-
name: external_exports.literal("@amaster.ai/pi-browser-use"),
|
|
4464
|
-
version: external_exports.string().trim().min(1).max(200),
|
|
4465
|
-
digest: sourceAcquisitionDigestSchema
|
|
4466
|
-
}).strict();
|
|
4467
4456
|
var sourceAcquisitionBrowserSkillDependencySchema = external_exports.object({
|
|
4468
4457
|
runtimeVersion: external_exports.string().trim().min(1).max(200),
|
|
4469
4458
|
runtimeDigest: sourceAcquisitionDigestSchema,
|
|
@@ -4475,6 +4464,11 @@ var sourceAcquisitionBrowserSkillDependencySchema = external_exports.object({
|
|
|
4475
4464
|
SOURCE_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY
|
|
4476
4465
|
).optional()
|
|
4477
4466
|
}).strict();
|
|
4467
|
+
var legacySourceAcquisitionBrowserDependencySchema = external_exports.object({
|
|
4468
|
+
name: external_exports.literal("@amaster.ai/pi-browser-use"),
|
|
4469
|
+
version: external_exports.string().trim().min(1).max(200),
|
|
4470
|
+
digest: sourceAcquisitionDigestSchema
|
|
4471
|
+
}).strict();
|
|
4478
4472
|
var sourceAcquisitionExecutionProfileSchema = external_exports.object({
|
|
4479
4473
|
purpose: external_exports.literal(SOURCE_ACQUISITION_PROFILE_VERSION),
|
|
4480
4474
|
companyId: external_exports.string().uuid(),
|
|
@@ -4492,9 +4486,9 @@ var sourceAcquisitionExecutionProfileSchema = external_exports.object({
|
|
|
4492
4486
|
contractRevision: external_exports.string().trim().min(1).max(200),
|
|
4493
4487
|
profileVersion: external_exports.literal(SOURCE_ACQUISITION_PROFILE_VERSION),
|
|
4494
4488
|
retentionVersion: external_exports.literal(SOURCE_ACQUISITION_RETENTION_VERSION),
|
|
4495
|
-
sourceExtensionDigest: sourceAcquisitionDigestSchema,
|
|
4496
4489
|
adapter: external_exports.enum([SOURCE_ACQUISITION_HEADLESS_ADAPTER, SOURCE_ACQUISITION_DESKTOP_ADAPTER]),
|
|
4497
|
-
|
|
4490
|
+
sourceExtensionDigest: sourceAcquisitionDigestSchema.optional(),
|
|
4491
|
+
browserDependency: legacySourceAcquisitionBrowserDependencySchema.optional(),
|
|
4498
4492
|
browserSkill: sourceAcquisitionBrowserSkillDependencySchema.optional()
|
|
4499
4493
|
}).strict(),
|
|
4500
4494
|
access: external_exports.object({
|
|
@@ -4546,7 +4540,7 @@ var sourceAcquisitionExecutionProfileSchema = external_exports.object({
|
|
|
4546
4540
|
});
|
|
4547
4541
|
}
|
|
4548
4542
|
const authenticated = profile.access.mode === "authenticated";
|
|
4549
|
-
if (authenticated && (profile.transport.browserMode !== "existing" || profile.transport.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || profile.connectorAdmission.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || !profile.
|
|
4543
|
+
if (authenticated && (profile.transport.browserMode !== "existing" || profile.transport.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || profile.connectorAdmission.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || !profile.access.browserBindingId || !profile.access.localOpaqueRef || !profile.access.browserLeaseId || !profile.access.browserLeaseExpiresAt) || !authenticated && (profile.transport.browserMode !== "isolated" || profile.transport.adapter !== SOURCE_ACQUISITION_HEADLESS_ADAPTER || profile.connectorAdmission.adapter !== SOURCE_ACQUISITION_HEADLESS_ADAPTER || profile.access.browserBindingId !== void 0 || profile.access.localOpaqueRef !== void 0 || profile.access.browserLeaseId !== void 0 || profile.access.browserLeaseExpiresAt !== void 0)) {
|
|
4550
4544
|
ctx.addIssue({
|
|
4551
4545
|
code: external_exports.ZodIssueCode.custom,
|
|
4552
4546
|
path: ["access", "mode"],
|
|
@@ -4571,9 +4565,9 @@ var sourceAcquisitionExecutionProfileV2Schema = external_exports.object({
|
|
|
4571
4565
|
contractRevision: external_exports.string().trim().min(1).max(200),
|
|
4572
4566
|
profileVersion: external_exports.literal(SOURCE_ACQUISITION_PROFILE_VERSION_V2),
|
|
4573
4567
|
retentionVersion: external_exports.literal(SOURCE_ACQUISITION_RETENTION_VERSION),
|
|
4574
|
-
sourceExtensionDigest: sourceAcquisitionDigestSchema,
|
|
4575
4568
|
adapter: external_exports.enum([SOURCE_ACQUISITION_HEADLESS_ADAPTER, SOURCE_ACQUISITION_DESKTOP_ADAPTER]),
|
|
4576
|
-
|
|
4569
|
+
sourceExtensionDigest: sourceAcquisitionDigestSchema.optional(),
|
|
4570
|
+
browserDependency: legacySourceAcquisitionBrowserDependencySchema.optional(),
|
|
4577
4571
|
browserSkill: sourceAcquisitionBrowserSkillDependencySchema.optional()
|
|
4578
4572
|
}).strict(),
|
|
4579
4573
|
access: external_exports.object({
|
|
@@ -4625,7 +4619,7 @@ var sourceAcquisitionExecutionProfileV2Schema = external_exports.object({
|
|
|
4625
4619
|
});
|
|
4626
4620
|
}
|
|
4627
4621
|
const authenticated = profile.access.mode === "authenticated";
|
|
4628
|
-
if (authenticated && (profile.transport.browserMode !== "existing" || profile.transport.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || profile.connectorAdmission.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || !profile.
|
|
4622
|
+
if (authenticated && (profile.transport.browserMode !== "existing" || profile.transport.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || profile.connectorAdmission.adapter !== SOURCE_ACQUISITION_DESKTOP_ADAPTER || !profile.access.browserBindingId || !profile.access.localOpaqueRef || !profile.access.browserLeaseId || !profile.access.browserLeaseExpiresAt) || !authenticated && (profile.transport.browserMode !== "isolated" || profile.transport.adapter !== SOURCE_ACQUISITION_HEADLESS_ADAPTER || profile.connectorAdmission.adapter !== SOURCE_ACQUISITION_HEADLESS_ADAPTER || profile.access.browserBindingId !== void 0 || profile.access.localOpaqueRef !== void 0 || profile.access.browserLeaseId !== void 0 || profile.access.browserLeaseExpiresAt !== void 0)) {
|
|
4629
4623
|
ctx.addIssue({
|
|
4630
4624
|
code: external_exports.ZodIssueCode.custom,
|
|
4631
4625
|
path: ["access"],
|
|
@@ -4701,55 +4695,6 @@ var sourceAuthenticationOriginDiscoveryIngestSchema = external_exports.object({
|
|
|
4701
4695
|
receipt: authenticationOriginDiscoveryReceiptSchema,
|
|
4702
4696
|
receiptDigest: sha256PrefixedDigestSchema
|
|
4703
4697
|
}).strict();
|
|
4704
|
-
var sourceAcquisitionRuntimeStatusSchema = external_exports.object({
|
|
4705
|
-
ready: external_exports.literal(true),
|
|
4706
|
-
profileVersion: external_exports.literal(SOURCE_ACQUISITION_PROFILE_VERSION),
|
|
4707
|
-
retentionVersion: external_exports.literal(SOURCE_ACQUISITION_RETENTION_VERSION),
|
|
4708
|
-
actionVersion: external_exports.literal(SOURCE_ACQUISITION_ACTION_VERSION),
|
|
4709
|
-
extension: external_exports.object({
|
|
4710
|
-
digest: sourceAcquisitionDigestSchema
|
|
4711
|
-
}).strict(),
|
|
4712
|
-
adapters: external_exports.array(external_exports.enum([
|
|
4713
|
-
SOURCE_ACQUISITION_HEADLESS_ADAPTER,
|
|
4714
|
-
SOURCE_ACQUISITION_DESKTOP_ADAPTER
|
|
4715
|
-
])).min(1).max(2),
|
|
4716
|
-
browserSkill: sourceAcquisitionBrowserSkillDependencySchema.optional(),
|
|
4717
|
-
connector: external_exports.object({
|
|
4718
|
-
version: external_exports.string().trim().min(1).max(200),
|
|
4719
|
-
digest: external_exports.string().regex(/^[a-f0-9]{64}$/u)
|
|
4720
|
-
}).strict(),
|
|
4721
|
-
packages: external_exports.array(external_exports.object({
|
|
4722
|
-
name: external_exports.string().trim().min(1).max(200),
|
|
4723
|
-
version: external_exports.string().trim().min(1).max(200),
|
|
4724
|
-
digest: external_exports.string().regex(/^[a-f0-9]{64}$/u)
|
|
4725
|
-
}).strict()).min(1).max(20),
|
|
4726
|
-
v2Cohort: external_exports.union([
|
|
4727
|
-
external_exports.object({
|
|
4728
|
-
state: external_exports.literal("ready"),
|
|
4729
|
-
proof: external_exports.object({
|
|
4730
|
-
supportedProfileVersions: external_exports.tuple([
|
|
4731
|
-
external_exports.literal(SOURCE_ACQUISITION_PROFILE_VERSION),
|
|
4732
|
-
external_exports.literal(SOURCE_ACQUISITION_PROFILE_VERSION_V2)
|
|
4733
|
-
]),
|
|
4734
|
-
profileVersion: external_exports.literal(SOURCE_ACQUISITION_PROFILE_VERSION_V2),
|
|
4735
|
-
capability: external_exports.literal(SOURCE_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY),
|
|
4736
|
-
piCodingAgent: external_exports.object({
|
|
4737
|
-
version: external_exports.literal(SOURCE_ACQUISITION_V2_PI_CODING_AGENT_VERSION),
|
|
4738
|
-
digest: sourceAcquisitionDigestSchema
|
|
4739
|
-
}).strict(),
|
|
4740
|
-
sourceExtensionDigest: sha256PrefixedDigestSchema,
|
|
4741
|
-
runtimeBuildCommit: external_exports.string().regex(/^[a-f0-9]{40}$/u),
|
|
4742
|
-
deploymentImageDigest: sha256PrefixedDigestSchema,
|
|
4743
|
-
completionGuard: external_exports.literal(SOURCE_ACQUISITION_V2_COMPLETION_GUARD),
|
|
4744
|
-
capabilityDigest: sha256PrefixedDigestSchema
|
|
4745
|
-
}).strict()
|
|
4746
|
-
}).strict(),
|
|
4747
|
-
external_exports.object({
|
|
4748
|
-
state: external_exports.literal("incompatible"),
|
|
4749
|
-
reason: external_exports.string().regex(/^source_acquisition_v2_[a-z0-9_]{1,100}$/u)
|
|
4750
|
-
}).strict()
|
|
4751
|
-
]).optional()
|
|
4752
|
-
}).strict();
|
|
4753
4698
|
|
|
4754
4699
|
// ../shared/src/amaster-runtime-connector.ts
|
|
4755
4700
|
var AMASTER_RUNTIME_COMPLETION_TERMINALIZATION_RACE_ERROR_CODE = "runtime_completion_terminalization_race";
|
|
@@ -9784,10 +9729,16 @@ var createIssueBaseSchema = external_exports.object({
|
|
|
9784
9729
|
instructions: multilineTextSchema.optional().nullable()
|
|
9785
9730
|
}).strict().optional().nullable()
|
|
9786
9731
|
});
|
|
9732
|
+
var createIssueLabelNamesSchema = external_exports.array(external_exports.string().trim().min(1).max(48)).max(3).describe(
|
|
9733
|
+
"Optional existing or new label names. Use zero to three reusable work categories: prefer exact existing Company labels that fit the taxonomy, otherwise use a shared business-domain label or a stable industry-specific topic grounded in verified Company context. Do not use entity names, Issue kinds, workflow metadata, one-off deliverables, file formats, or vague buckets as labels. The Server creates missing names and reuses exact Company matches."
|
|
9734
|
+
);
|
|
9787
9735
|
var createIssueInputSchema = createIssueBaseSchema.extend({
|
|
9788
|
-
status: createIssueBaseSchema.shape.status.optional()
|
|
9736
|
+
status: createIssueBaseSchema.shape.status.optional(),
|
|
9737
|
+
labels: createIssueLabelNamesSchema.optional()
|
|
9789
9738
|
});
|
|
9790
|
-
var createIssueSchema = withCreateIssueStatusDefault(createIssueBaseSchema
|
|
9739
|
+
var createIssueSchema = withCreateIssueStatusDefault(createIssueBaseSchema.extend({
|
|
9740
|
+
labels: createIssueLabelNamesSchema.optional()
|
|
9741
|
+
}));
|
|
9791
9742
|
var upsertIssueWatchdogSchema = external_exports.object({
|
|
9792
9743
|
agentId: external_exports.string().uuid(),
|
|
9793
9744
|
instructions: multilineTextSchema.optional().nullable()
|
|
@@ -9809,7 +9760,8 @@ var createChildIssueSchema = withCreateIssueStatusDefault(createIssueBaseSchema.
|
|
|
9809
9760
|
delegation: issueDelegationInputSchema,
|
|
9810
9761
|
acceptanceCriteria: external_exports.array(external_exports.string().trim().min(1).max(500)).max(20).optional(),
|
|
9811
9762
|
blockParentUntilDone: external_exports.boolean().optional().default(false),
|
|
9812
|
-
inputWorkProductIds: external_exports.array(external_exports.string().uuid()).max(50).optional()
|
|
9763
|
+
inputWorkProductIds: external_exports.array(external_exports.string().uuid()).max(50).optional(),
|
|
9764
|
+
labels: createIssueLabelNamesSchema.optional()
|
|
9813
9765
|
}));
|
|
9814
9766
|
var createAcceptedPlanDecompositionSchema = external_exports.object({
|
|
9815
9767
|
acceptedPlanRevisionId: external_exports.string().uuid(),
|
|
@@ -29571,23 +29523,13 @@ function createSourceCompletionStopPolicy({
|
|
|
29571
29523
|
}
|
|
29572
29524
|
|
|
29573
29525
|
// src/amaster-runtime-daemon.mjs
|
|
29574
|
-
var CONNECTOR_VERSION = "0.1.1-beta.
|
|
29526
|
+
var CONNECTOR_VERSION = "0.1.1-beta.144";
|
|
29575
29527
|
var CONNECTOR_CONTRACT_VERSION = "2026-06-04.v1";
|
|
29576
29528
|
var SOURCE_ACQUISITION_CAPABILITY2 = source_acquisition_compatibility_default.profileVersion;
|
|
29577
29529
|
var daemonRequire = createRequire(import.meta.url);
|
|
29578
29530
|
var SOURCE_ACQUISITION_PROFILE_VERSION2 = source_acquisition_compatibility_default.profileVersion;
|
|
29579
29531
|
var SOURCE_ACQUISITION_RETENTION_VERSION2 = source_acquisition_compatibility_default.retentionVersion;
|
|
29580
|
-
var SOURCE_ACQUISITION_ACTION_VERSION2 = source_acquisition_compatibility_default.actionVersion;
|
|
29581
|
-
var SOURCE_ACQUISITION_BROWSER_POLICY_VERSION2 = source_acquisition_compatibility_default.policyVersion;
|
|
29582
|
-
var SOURCE_ACQUISITION_HEADLESS_ADAPTER2 = source_acquisition_compatibility_default.adapters[0];
|
|
29583
|
-
var SOURCE_ACQUISITION_DESKTOP_ADAPTER2 = "browser_skill_desktop_v1";
|
|
29584
29532
|
var SOURCE_ACQUISITION_PROFILE_VERSION_V22 = source_acquisition_compatibility_default.v2Activation.profileVersion;
|
|
29585
|
-
var SOURCE_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY2 = source_acquisition_compatibility_default.v2Activation.capability;
|
|
29586
|
-
var SOURCE_ACQUISITION_V2_PI_VERSION = source_acquisition_compatibility_default.v2Activation.piCodingAgentVersion;
|
|
29587
|
-
var SOURCE_ACQUISITION_V2_COMPLETION_GUARD2 = source_acquisition_compatibility_default.v2Activation.completionGuard;
|
|
29588
|
-
var SOURCE_ACQUISITION_PACKAGE_VERSIONS = Object.freeze(
|
|
29589
|
-
source_acquisition_compatibility_default.requiredPackages
|
|
29590
|
-
);
|
|
29591
29533
|
var MAX_CHECKPOINT_BYTES = 20 * 1024 * 1024;
|
|
29592
29534
|
var CHECKPOINT_TTL_MS = 24 * 60 * 60 * 1e3;
|
|
29593
29535
|
var AMASTER_PI_PROHIBITED_EXTRA_ARGS = /* @__PURE__ */ new Set(["--no-extensions", "--no-skills", "--no-tools", "--no-session"]);
|
|
@@ -30028,176 +29970,13 @@ function executorReadinessFor(config, executor) {
|
|
|
30028
29970
|
function buildExecutorReadiness(config) {
|
|
30029
29971
|
return config.executors.filter((executor) => executor.kind === "codex" || executor.kind === "pi").map((executor) => executorReadinessFor(config, executor));
|
|
30030
29972
|
}
|
|
30031
|
-
function sourceAcquisitionPackageMetadata(packageName, location = "pi-config") {
|
|
30032
|
-
const packageBase = location === "runtime" ? readString(process.env.PI_RUNTIME_ROOT) : readString(process.env.PI_CODING_AGENT_DIR ?? process.env.PI_AGENT_HOME);
|
|
30033
|
-
if (!packageBase) return null;
|
|
30034
|
-
const packagePath = join16(
|
|
30035
|
-
resolve14(expandHomePath(packageBase)),
|
|
30036
|
-
...location === "runtime" ? [] : ["npm"],
|
|
30037
|
-
"node_modules",
|
|
30038
|
-
...packageName.split("/"),
|
|
30039
|
-
"package.json"
|
|
30040
|
-
);
|
|
30041
|
-
if (!existsSync15(packagePath)) return null;
|
|
30042
|
-
const stat = lstatSync9(packagePath);
|
|
30043
|
-
if (!stat.isFile() || stat.isSymbolicLink()) return null;
|
|
30044
|
-
const metadata = readJsonFile2(packagePath);
|
|
30045
|
-
return metadata.name === packageName && readString(metadata.version) ? metadata : null;
|
|
30046
|
-
}
|
|
30047
|
-
function sourceAcquisitionBrowserExecutableReady() {
|
|
30048
|
-
const executable = readString(process.env.AMASTER_BROWSER_EXECUTABLE_PATH);
|
|
30049
|
-
if (!executable || !isAbsolute10(executable)) return false;
|
|
30050
|
-
try {
|
|
30051
|
-
const stat = statSync10(executable);
|
|
30052
|
-
return stat.isFile() && (stat.mode & 73) !== 0;
|
|
30053
|
-
} catch {
|
|
30054
|
-
return false;
|
|
30055
|
-
}
|
|
30056
|
-
}
|
|
30057
|
-
function sourceAcquisitionV2Cohort(extensionDigest) {
|
|
30058
|
-
const names = [
|
|
30059
|
-
"AMASTER_SOURCE_ACQUISITION_SUPPORTED_PROFILE_VERSIONS",
|
|
30060
|
-
"AMASTER_SOURCE_ACQUISITION_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY",
|
|
30061
|
-
"AMASTER_SOURCE_ACQUISITION_COMPLETION_GUARD",
|
|
30062
|
-
"AMASTER_SOURCE_ACQUISITION_CAPABILITY_DIGEST",
|
|
30063
|
-
"AMASTER_SOURCE_ACQUISITION_RUNTIME_BUILD_COMMIT",
|
|
30064
|
-
"AMASTER_SOURCE_ACQUISITION_SOURCE_EXTENSION_DIGEST",
|
|
30065
|
-
"AMASTER_SOURCE_ACQUISITION_PI_CODING_AGENT_VERSION",
|
|
30066
|
-
"AMASTER_SOURCE_ACQUISITION_PI_CODING_AGENT_DIGEST"
|
|
30067
|
-
];
|
|
30068
|
-
if (names.every((name) => !readString(process.env[name]))) return null;
|
|
30069
|
-
const incompatible = (reason) => ({ state: "incompatible", reason });
|
|
30070
|
-
const piMetadata = sourceAcquisitionPackageMetadata(
|
|
30071
|
-
"@earendil-works/pi-coding-agent",
|
|
30072
|
-
"runtime"
|
|
30073
|
-
);
|
|
30074
|
-
const piVersion = readString(process.env.AMASTER_SOURCE_ACQUISITION_PI_CODING_AGENT_VERSION);
|
|
30075
|
-
const piDigest = readString(process.env.AMASTER_SOURCE_ACQUISITION_PI_CODING_AGENT_DIGEST);
|
|
30076
|
-
const sourceExtensionDigest = readString(process.env.AMASTER_SOURCE_ACQUISITION_SOURCE_EXTENSION_DIGEST);
|
|
30077
|
-
const runtimeBuildCommit = readString(process.env.AMASTER_SOURCE_ACQUISITION_RUNTIME_BUILD_COMMIT);
|
|
30078
|
-
const deploymentImageDigest = readString(process.env.AMASTER_DEPLOYMENT_IMAGE_DIGEST);
|
|
30079
|
-
const capabilityDigest = readString(process.env.AMASTER_SOURCE_ACQUISITION_CAPABILITY_DIGEST);
|
|
30080
|
-
if (readString(process.env.AMASTER_SOURCE_ACQUISITION_SUPPORTED_PROFILE_VERSIONS) !== source_acquisition_compatibility_default.supportedProfileVersions.join(",") || readString(process.env.AMASTER_SOURCE_ACQUISITION_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY) !== SOURCE_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY2 || readString(process.env.AMASTER_SOURCE_ACQUISITION_COMPLETION_GUARD) !== SOURCE_ACQUISITION_V2_COMPLETION_GUARD2) return incompatible("source_acquisition_v2_capability_mismatch");
|
|
30081
|
-
if (piVersion !== SOURCE_ACQUISITION_V2_PI_VERSION || readString(piMetadata?.version) !== piVersion) {
|
|
30082
|
-
return incompatible("source_acquisition_v2_pi_version_mismatch");
|
|
30083
|
-
}
|
|
30084
|
-
if (!piDigest || !/^[a-f0-9]{64}$/u.test(piDigest)) {
|
|
30085
|
-
return incompatible("source_acquisition_v2_pi_digest_invalid");
|
|
30086
|
-
}
|
|
30087
|
-
if (sourceExtensionDigest !== `sha256:${extensionDigest}`) {
|
|
30088
|
-
return incompatible("source_acquisition_v2_extension_digest_mismatch");
|
|
30089
|
-
}
|
|
30090
|
-
if (!runtimeBuildCommit || !/^[a-f0-9]{40}$/u.test(runtimeBuildCommit)) {
|
|
30091
|
-
return incompatible("source_acquisition_v2_build_commit_invalid");
|
|
30092
|
-
}
|
|
30093
|
-
if (!deploymentImageDigest || !/^sha256:[a-f0-9]{64}$/u.test(deploymentImageDigest)) {
|
|
30094
|
-
return incompatible("source_acquisition_v2_image_digest_invalid");
|
|
30095
|
-
}
|
|
30096
|
-
const runtimeIdentity = {
|
|
30097
|
-
sourceProfileVersion: SOURCE_ACQUISITION_PROFILE_VERSION_V22,
|
|
30098
|
-
piCodingAgentVersion: SOURCE_ACQUISITION_V2_PI_VERSION,
|
|
30099
|
-
supportsAgentSettled: true,
|
|
30100
|
-
supportsSameSessionFollowUp: true,
|
|
30101
|
-
completionRepairHardCapSeconds: 120,
|
|
30102
|
-
sourceExtensionDigest,
|
|
30103
|
-
runtimeBuildCommit
|
|
30104
|
-
};
|
|
30105
|
-
const expectedCapabilityDigest = `sha256:${serializeSourceAcquisitionProfile(runtimeIdentity).sha256}`;
|
|
30106
|
-
if (capabilityDigest !== expectedCapabilityDigest) {
|
|
30107
|
-
return incompatible("source_acquisition_v2_capability_digest_mismatch");
|
|
30108
|
-
}
|
|
30109
|
-
return {
|
|
30110
|
-
state: "ready",
|
|
30111
|
-
proof: {
|
|
30112
|
-
supportedProfileVersions: [...source_acquisition_compatibility_default.supportedProfileVersions],
|
|
30113
|
-
profileVersion: SOURCE_ACQUISITION_PROFILE_VERSION_V22,
|
|
30114
|
-
capability: SOURCE_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY2,
|
|
30115
|
-
piCodingAgent: { version: piVersion, digest: piDigest },
|
|
30116
|
-
sourceExtensionDigest,
|
|
30117
|
-
runtimeBuildCommit,
|
|
30118
|
-
deploymentImageDigest,
|
|
30119
|
-
completionGuard: SOURCE_ACQUISITION_V2_COMPLETION_GUARD2,
|
|
30120
|
-
capabilityDigest
|
|
30121
|
-
}
|
|
30122
|
-
};
|
|
30123
|
-
}
|
|
30124
29973
|
function sourceAcquisitionRuntimeReadiness(config) {
|
|
30125
|
-
const unavailable = (reason) => ({ ready: false, reason });
|
|
30126
29974
|
const piExecutor = config.executors.find((executor) => executor.kind === "pi");
|
|
30127
|
-
if (!piExecutor || !commandExists(piExecutor.command, {
|
|
30128
|
-
...process.env,
|
|
30129
|
-
AMASTER_EXECUTOR_PATHS: config.executorPaths.join(",")
|
|
30130
|
-
})) {
|
|
30131
|
-
return unavailable("source_acquisition_pi_executor_unavailable");
|
|
30132
|
-
}
|
|
30133
|
-
const packageDigests = {
|
|
30134
|
-
"@amaster.ai/pi-browser-use": readString(process.env.AMASTER_SOURCE_ACQUISITION_PI_BROWSER_USE_DIGEST)
|
|
30135
|
-
};
|
|
30136
|
-
const extensionDigest = readString(process.env.AMASTER_SOURCE_ACQUISITION_EXTENSION_DIGEST);
|
|
30137
|
-
if (!extensionDigest || !/^[a-f0-9]{64}$/.test(extensionDigest)) {
|
|
30138
|
-
return unavailable("source_acquisition_extension_digest_unavailable");
|
|
30139
|
-
}
|
|
30140
|
-
const adapters = (readString(process.env.AMASTER_SOURCE_ACQUISITION_ADAPTERS) ?? "").split(",").map((value) => value.trim()).filter(Boolean);
|
|
30141
|
-
if (adapters.length === 0 || adapters.some((adapter) => ![SOURCE_ACQUISITION_HEADLESS_ADAPTER2, SOURCE_ACQUISITION_DESKTOP_ADAPTER2].includes(adapter))) {
|
|
30142
|
-
return unavailable("source_acquisition_adapter_attestation_invalid");
|
|
30143
|
-
}
|
|
30144
|
-
let browserSkill;
|
|
30145
|
-
if (adapters.includes(SOURCE_ACQUISITION_DESKTOP_ADAPTER2)) {
|
|
30146
|
-
const authenticationOriginDiscoveryCapability = readString(
|
|
30147
|
-
process.env.AMASTER_SOURCE_ACQUISITION_BROWSER_SKILL_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY
|
|
30148
|
-
);
|
|
30149
|
-
if (authenticationOriginDiscoveryCapability && authenticationOriginDiscoveryCapability !== SOURCE_AUTHENTICATION_ORIGIN_DISCOVERY_CAPABILITY2) {
|
|
30150
|
-
return unavailable("source_acquisition_browser_skill_discovery_attestation_invalid");
|
|
30151
|
-
}
|
|
30152
|
-
browserSkill = {
|
|
30153
|
-
runtimeVersion: readString(process.env.AMASTER_SOURCE_ACQUISITION_BROWSER_SKILL_RUNTIME_VERSION),
|
|
30154
|
-
runtimeDigest: readString(process.env.AMASTER_SOURCE_ACQUISITION_BROWSER_SKILL_RUNTIME_DIGEST),
|
|
30155
|
-
assetVersion: readString(process.env.AMASTER_SOURCE_ACQUISITION_BROWSER_SKILL_ASSET_VERSION),
|
|
30156
|
-
assetDigest: readString(process.env.AMASTER_SOURCE_ACQUISITION_BROWSER_SKILL_ASSET_DIGEST),
|
|
30157
|
-
policyVersion: SOURCE_ACQUISITION_BROWSER_POLICY_VERSION2,
|
|
30158
|
-
policyDigest: readString(process.env.AMASTER_SOURCE_ACQUISITION_BROWSER_SKILL_POLICY_DIGEST),
|
|
30159
|
-
...authenticationOriginDiscoveryCapability ? {
|
|
30160
|
-
authenticationOriginDiscoveryCapability
|
|
30161
|
-
} : {}
|
|
30162
|
-
};
|
|
30163
|
-
if (!browserSkill.runtimeVersion || !browserSkill.assetVersion || !/^[a-f0-9]{64}$/u.test(browserSkill.runtimeDigest ?? "") || !/^[a-f0-9]{64}$/u.test(browserSkill.assetDigest ?? "") || !/^[a-f0-9]{64}$/u.test(browserSkill.policyDigest ?? "")) {
|
|
30164
|
-
return unavailable("source_acquisition_browser_skill_attestation_invalid");
|
|
30165
|
-
}
|
|
30166
|
-
}
|
|
30167
|
-
if (adapters.includes(SOURCE_ACQUISITION_HEADLESS_ADAPTER2) && !sourceAcquisitionBrowserExecutableReady()) {
|
|
30168
|
-
return unavailable("source_acquisition_browser_executable_unavailable");
|
|
30169
|
-
}
|
|
30170
|
-
const connectorDigest = readString(process.env.AMASTER_SOURCE_ACQUISITION_CONNECTOR_DIGEST);
|
|
30171
|
-
if (!connectorDigest || !/^[a-f0-9]{64}$/.test(connectorDigest)) {
|
|
30172
|
-
return unavailable("source_acquisition_connector_digest_unavailable");
|
|
30173
|
-
}
|
|
30174
|
-
const packages = [];
|
|
30175
|
-
for (const [name, version] of Object.entries(SOURCE_ACQUISITION_PACKAGE_VERSIONS)) {
|
|
30176
|
-
const metadata = sourceAcquisitionPackageMetadata(name);
|
|
30177
|
-
const digest = packageDigests[name];
|
|
30178
|
-
if (readString(metadata?.version) !== version) {
|
|
30179
|
-
return unavailable("source_acquisition_package_version_mismatch");
|
|
30180
|
-
}
|
|
30181
|
-
if (!digest || !/^[a-f0-9]{64}$/.test(digest)) {
|
|
30182
|
-
return unavailable("source_acquisition_package_digest_unavailable");
|
|
30183
|
-
}
|
|
30184
|
-
packages.push({ name, version, digest });
|
|
30185
|
-
}
|
|
30186
|
-
const v2Cohort = sourceAcquisitionV2Cohort(extensionDigest);
|
|
30187
29975
|
return {
|
|
30188
|
-
ready:
|
|
30189
|
-
|
|
30190
|
-
|
|
30191
|
-
|
|
30192
|
-
extension: { digest: extensionDigest },
|
|
30193
|
-
adapters,
|
|
30194
|
-
...browserSkill ? { browserSkill } : {},
|
|
30195
|
-
connector: {
|
|
30196
|
-
version: CONNECTOR_VERSION,
|
|
30197
|
-
digest: connectorDigest
|
|
30198
|
-
},
|
|
30199
|
-
packages,
|
|
30200
|
-
...v2Cohort ? { v2Cohort } : {}
|
|
29976
|
+
ready: Boolean(piExecutor && commandExists(piExecutor.command, {
|
|
29977
|
+
...process.env,
|
|
29978
|
+
AMASTER_EXECUTOR_PATHS: config.executorPaths.join(",")
|
|
29979
|
+
}))
|
|
30201
29980
|
};
|
|
30202
29981
|
}
|
|
30203
29982
|
function browserSessionRuntimeReadiness(config) {
|
package/dist/amaster-runtime.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { homedir, hostname } from "node:os";
|
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import { BUILD_SUPPORTED_CAPABILITIES } from "./amaster-runtime-daemon/capability-registry.mjs";
|
|
9
9
|
|
|
10
|
-
const CONNECTOR_VERSION = "0.1.1-beta.
|
|
10
|
+
const CONNECTOR_VERSION = "0.1.1-beta.144";
|
|
11
11
|
|
|
12
12
|
const CONFIG_KEY_MAP = new Map([
|
|
13
13
|
["server_url", "AMASTER_EMPLOYEE_SERVER_URL"],
|