@amaster.ai/employee-runtime-connector 0.1.1-beta.45 → 0.1.1-beta.47
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.
|
@@ -2699,7 +2699,6 @@ export default function amasterEffectiveToolsAttestor(pi) {
|
|
|
2699
2699
|
|
|
2700
2700
|
// src/amaster-runtime-daemon/pi-managed-mcp-profile.mjs
|
|
2701
2701
|
var MANAGED_PI_MCP_TOOL_MODE = "proxy_only";
|
|
2702
|
-
var MANAGED_PI_HYBRID_MCP_TOOL_MODE = "hybrid";
|
|
2703
2702
|
var MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE = "direct_typed";
|
|
2704
2703
|
var MANAGED_PI_MCP_ARGS_NORMALIZATION = "json_string_control_characters_v1";
|
|
2705
2704
|
var MANAGED_PI_MCP_ARGS_NORMALIZER_FILENAME = "amaster-mcp-args-normalizer.js";
|
|
@@ -2732,12 +2731,43 @@ function createManagedPiMcpProfileApi(options = {}) {
|
|
|
2732
2731
|
"wiki_read_page",
|
|
2733
2732
|
"wiki_list_pages"
|
|
2734
2733
|
]);
|
|
2735
|
-
const
|
|
2736
|
-
"amaster.read_company_snapshot",
|
|
2737
|
-
"amaster.read_governed_business_state",
|
|
2734
|
+
const FULL_DIRECT_TYPED_V1_BASE_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
2738
2735
|
"runtime_action.describe",
|
|
2736
|
+
"runtime_action.prepare",
|
|
2737
|
+
"runtime_action.submit",
|
|
2738
|
+
"runtime_action.plan",
|
|
2739
|
+
"runtime_action.commit",
|
|
2740
|
+
"runtime_action.status",
|
|
2741
|
+
"amaster.read_company_snapshot",
|
|
2742
|
+
"amaster.read_issue",
|
|
2739
2743
|
"amaster.read_issue_document",
|
|
2740
|
-
"amaster.
|
|
2744
|
+
"amaster.read_issue_delivery",
|
|
2745
|
+
"amaster.read_issue_evidence",
|
|
2746
|
+
"amaster.read_governed_business_state",
|
|
2747
|
+
"amaster.read_company_diagnosis",
|
|
2748
|
+
"amaster.publish_company_diagnosis_brief"
|
|
2749
|
+
]);
|
|
2750
|
+
const FULL_DIRECT_TYPED_V1_WIKI_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
2751
|
+
"wiki_search",
|
|
2752
|
+
"wiki_read_page",
|
|
2753
|
+
"wiki_list_pages",
|
|
2754
|
+
"wiki_read_source",
|
|
2755
|
+
"wiki_write_page"
|
|
2756
|
+
]);
|
|
2757
|
+
const FULL_DIRECT_TYPED_V1_CONNECTOR_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
2758
|
+
"connector.search_actions",
|
|
2759
|
+
"connector.get_action_guide",
|
|
2760
|
+
"connector.execute_action",
|
|
2761
|
+
"connector.admin.list_apps",
|
|
2762
|
+
"connector.admin.list_connections",
|
|
2763
|
+
"connector.admin.upsert_connection",
|
|
2764
|
+
"connector.admin.delete_connection",
|
|
2765
|
+
"connector.admin.validate_connection"
|
|
2766
|
+
]);
|
|
2767
|
+
const FULL_DIRECT_TYPED_V1_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
2768
|
+
...FULL_DIRECT_TYPED_V1_BASE_TOOL_NAMES,
|
|
2769
|
+
...FULL_DIRECT_TYPED_V1_WIKI_TOOL_NAMES,
|
|
2770
|
+
...FULL_DIRECT_TYPED_V1_CONNECTOR_TOOL_NAMES
|
|
2741
2771
|
]);
|
|
2742
2772
|
const SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
2743
2773
|
"runtime_action.submit",
|
|
@@ -2976,12 +3006,18 @@ function createManagedPiMcpProfileApi(options = {}) {
|
|
|
2976
3006
|
}
|
|
2977
3007
|
const tools = Array.isArray(catalog.tools) ? catalog.tools.map(record6) : [];
|
|
2978
3008
|
const declaredToolNames = new Set(tools.map((tool) => tool.name).filter((name) => typeof name === "string"));
|
|
2979
|
-
const
|
|
2980
|
-
const
|
|
2981
|
-
const
|
|
2982
|
-
|
|
3009
|
+
const covers = (set) => [...set].every((name) => declaredToolNames.has(name));
|
|
3010
|
+
const countIn = (set) => tools.filter((tool) => set.has(tool.name)).length;
|
|
3011
|
+
const sourceAcquisitionCatalog = mcpToolMode === MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE && tools.length === SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES.size && covers(SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES);
|
|
3012
|
+
const diagnosisWikiCount = countIn(DIAGNOSIS_WIKI_READ_DIRECT_TYPED_V1_TOOL_NAMES);
|
|
3013
|
+
const diagnosisCatalog = mcpToolMode === MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE && !sourceAcquisitionCatalog && tools.length === DIRECT_TYPED_V1_TOOL_NAMES.size + diagnosisWikiCount && covers(DIRECT_TYPED_V1_TOOL_NAMES) && (diagnosisWikiCount === 0 || diagnosisWikiCount === DIAGNOSIS_WIKI_READ_DIRECT_TYPED_V1_TOOL_NAMES.size);
|
|
3014
|
+
const fullWikiCount = countIn(FULL_DIRECT_TYPED_V1_WIKI_TOOL_NAMES);
|
|
3015
|
+
const fullConnectorCount = countIn(FULL_DIRECT_TYPED_V1_CONNECTOR_TOOL_NAMES);
|
|
3016
|
+
const fullCatalog = mcpToolMode === MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE && !sourceAcquisitionCatalog && !diagnosisCatalog && tools.length === FULL_DIRECT_TYPED_V1_BASE_TOOL_NAMES.size + fullWikiCount + fullConnectorCount && covers(FULL_DIRECT_TYPED_V1_BASE_TOOL_NAMES) && (fullWikiCount === 0 || fullWikiCount === FULL_DIRECT_TYPED_V1_WIKI_TOOL_NAMES.size) && (fullConnectorCount === 0 || fullConnectorCount === FULL_DIRECT_TYPED_V1_CONNECTOR_TOOL_NAMES.size) && tools.every((tool) => FULL_DIRECT_TYPED_V1_TOOL_NAMES.has(tool.name));
|
|
3017
|
+
if (mcpToolMode === MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE && !sourceAcquisitionCatalog && !diagnosisCatalog && !fullCatalog) {
|
|
2983
3018
|
throw new Error("pi_managed_mcp_invalid: direct tool catalog size mismatch");
|
|
2984
3019
|
}
|
|
3020
|
+
const admittedToolNames = sourceAcquisitionCatalog ? SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES : diagnosisCatalog ? /* @__PURE__ */ new Set([...DIRECT_TYPED_V1_TOOL_NAMES, ...DIAGNOSIS_WIKI_READ_DIRECT_TYPED_V1_TOOL_NAMES]) : FULL_DIRECT_TYPED_V1_TOOL_NAMES;
|
|
2985
3021
|
const names = /* @__PURE__ */ new Set();
|
|
2986
3022
|
const exposedNames = /* @__PURE__ */ new Set();
|
|
2987
3023
|
const normalized = tools.map((tool) => {
|
|
@@ -3010,9 +3046,6 @@ function createManagedPiMcpProfileApi(options = {}) {
|
|
|
3010
3046
|
if (!(/* @__PURE__ */ new Set(["read", "write", "destructive"])).has(riskLevel)) {
|
|
3011
3047
|
throw new Error(`pi_managed_mcp_invalid: direct tool risk level mismatch for ${name}`);
|
|
3012
3048
|
}
|
|
3013
|
-
if (mcpToolMode === MANAGED_PI_HYBRID_MCP_TOOL_MODE && riskLevel !== "read") {
|
|
3014
|
-
throw new Error(`pi_managed_mcp_invalid: hybrid direct tool must be read-only for ${name}`);
|
|
3015
|
-
}
|
|
3016
3049
|
return {
|
|
3017
3050
|
name,
|
|
3018
3051
|
exposedName,
|
|
@@ -3024,16 +3057,6 @@ function createManagedPiMcpProfileApi(options = {}) {
|
|
|
3024
3057
|
effectiveSchemaHash: stablePiToolSchemaHash(inputSchema, { adapterNormalized: true })
|
|
3025
3058
|
};
|
|
3026
3059
|
});
|
|
3027
|
-
if (mcpToolMode === MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE) {
|
|
3028
|
-
const requiredToolNames = sourceAcquisitionCatalog ? SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES : DIRECT_TYPED_V1_TOOL_NAMES;
|
|
3029
|
-
for (const name of requiredToolNames) {
|
|
3030
|
-
if (!names.has(name)) throw new Error("pi_managed_mcp_invalid: direct tool catalog name mismatch");
|
|
3031
|
-
}
|
|
3032
|
-
const wikiReadCount = sourceAcquisitionCatalog ? 0 : [...DIAGNOSIS_WIKI_READ_DIRECT_TYPED_V1_TOOL_NAMES].filter((name) => names.has(name)).length;
|
|
3033
|
-
if (wikiReadCount !== 0 && wikiReadCount !== DIAGNOSIS_WIKI_READ_DIRECT_TYPED_V1_TOOL_NAMES.size) {
|
|
3034
|
-
throw new Error("pi_managed_mcp_invalid: diagnosis wiki read catalog incomplete");
|
|
3035
|
-
}
|
|
3036
|
-
}
|
|
3037
3060
|
const setHash = stablePiDirectCatalogSetHash(normalized.map((tool) => ({
|
|
3038
3061
|
name: tool.name,
|
|
3039
3062
|
exposedName: tool.exposedName,
|
|
@@ -3120,7 +3143,7 @@ function createManagedPiMcpProfileApi(options = {}) {
|
|
|
3120
3143
|
}
|
|
3121
3144
|
if ((runtimeAuth.issueId ?? null) !== (headers["x-amaster-issue-id"] ?? null)) throw new Error("pi_managed_mcp_invalid: issue authority mismatch");
|
|
3122
3145
|
const mcpToolMode = gateway.mcpToolMode ?? MANAGED_PI_MCP_TOOL_MODE;
|
|
3123
|
-
if (mcpToolMode !== MANAGED_PI_MCP_TOOL_MODE && mcpToolMode !==
|
|
3146
|
+
if (mcpToolMode !== MANAGED_PI_MCP_TOOL_MODE && mcpToolMode !== MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE) {
|
|
3124
3147
|
throw new Error("pi_managed_mcp_invalid: unsupported managed Pi MCP tool mode");
|
|
3125
3148
|
}
|
|
3126
3149
|
const directCatalog = mcpToolMode !== MANAGED_PI_MCP_TOOL_MODE ? validateDirectCatalog(gateway, mcpToolMode) : null;
|
|
@@ -3711,7 +3734,7 @@ ${result3.stderr ?? ""}`, "Pi", MINIMUM_PI_VERSION);
|
|
|
3711
3734
|
name: tool.exposedName,
|
|
3712
3735
|
schemaHash: tool.effectiveSchemaHash
|
|
3713
3736
|
}))),
|
|
3714
|
-
proxyMode:
|
|
3737
|
+
proxyMode: "forbidden",
|
|
3715
3738
|
attestorSourceSha256,
|
|
3716
3739
|
configSha256: sha2562(readFileSync3(configPath)),
|
|
3717
3740
|
cacheSha256
|
|
@@ -3833,9 +3856,6 @@ ${result3.stderr ?? ""}`, "Pi", MINIMUM_PI_VERSION);
|
|
|
3833
3856
|
function prepareDelegatedPiMcpProfile2(input) {
|
|
3834
3857
|
assertInvocationIsolation2(input);
|
|
3835
3858
|
const { gateway, gatewayUrl, sessionToken, headers, runId, mcpToolMode, directCatalog } = validateAuthority2(input);
|
|
3836
|
-
if (mcpToolMode === MANAGED_PI_HYBRID_MCP_TOOL_MODE) {
|
|
3837
|
-
throw new Error("pi_delegated_mcp_hybrid_unsupported: managed effective-tool attestation is required");
|
|
3838
|
-
}
|
|
3839
3859
|
const runDir = resolve3(nonEmpty2(input.runDir, "runDir"));
|
|
3840
3860
|
const cwd = resolve3(nonEmpty2(input.cwd, "cwd"));
|
|
3841
3861
|
if (!within2(cwd, runDir)) throw new Error("pi_delegated_mcp_owner_mismatch: cwd is outside the managed run");
|
|
@@ -4905,6 +4925,11 @@ function continuationText(context) {
|
|
|
4905
4925
|
if (!body) return "";
|
|
4906
4926
|
return [readString(summary.title), body].filter(Boolean).join("\n");
|
|
4907
4927
|
}
|
|
4928
|
+
var CONTINUATION_SUMMARY_TITLE_ALLOWLIST = /* @__PURE__ */ new Set(["Continuation Summary", "Predecessor Execution Summary"]);
|
|
4929
|
+
function continuationSectionTitle(context) {
|
|
4930
|
+
const title = readString(asRecord(context.paperclipContinuationSummary).title);
|
|
4931
|
+
return title && CONTINUATION_SUMMARY_TITLE_ALLOWLIST.has(title) ? title : "Continuation Summary";
|
|
4932
|
+
}
|
|
4908
4933
|
function taskAcceptanceContractError(code, message) {
|
|
4909
4934
|
const error = new Error(message);
|
|
4910
4935
|
error.code = code;
|
|
@@ -5421,10 +5446,10 @@ function wikiAccessRuleLine(input) {
|
|
|
5421
5446
|
const tools = input.hasGovernedMcp === true && access.tools === true;
|
|
5422
5447
|
const treePath = readString(access.treePath);
|
|
5423
5448
|
if (tools && treePath) {
|
|
5424
|
-
return `- Company wiki access in this run: the
|
|
5449
|
+
return `- Company wiki access in this run: the wiki tools wiki_search / wiki_read_page / wiki_list_pages / wiki_read_source / wiki_write_page via the amaster MCP, and the wiki tree at ${treePath} (read wiki/index.md there first).`;
|
|
5425
5450
|
}
|
|
5426
5451
|
if (tools) {
|
|
5427
|
-
return "- Company wiki access in this run: the
|
|
5452
|
+
return "- Company wiki access in this run: the wiki tools wiki_search / wiki_read_page / wiki_list_pages / wiki_read_source / wiki_write_page via the amaster MCP. Use them for targeted lookup and durable Wiki updates; Company Knowledge operations must use the exact operationId and sourceRefs named by the issue.";
|
|
5428
5453
|
}
|
|
5429
5454
|
if (treePath) {
|
|
5430
5455
|
return `- Company wiki access in this run: the wiki tree at ${treePath}. Read wiki/index.md first (every page listed with a one-line summary), then open the specific pages you need; wiki_* tools are not available in this run.`;
|
|
@@ -5542,7 +5567,7 @@ function fixedRules(input, includeIssueLine) {
|
|
|
5542
5567
|
wikiAccessRuleLine(input),
|
|
5543
5568
|
"- Runtime Artifact lineage fields sourceWorkProductId and sourceWorkProductIds accept only current artifact work product ids returned as result.effectResult.workProductId by a succeeded upload_artifact action. Never pass a documentId or revisionId as artifact lineage.",
|
|
5544
5569
|
"- When all inputs are issue documents and there is no source artifact work product, persist the derived result with upsert_document and do not call upload_artifact for a derived or review artifact.",
|
|
5545
|
-
input.hasGovernedMcp && input.executorKind === "pi" && input.managedMcpToolMode === "proxy_only" ? "- For proxy-only Pi MCP writes, put the complete target argument object directly in actual `mcp` string `args` as strict JSON; escape quotes, backslashes, and control characters. Do not stage or print tool calls. If inner JSON syntax fails, correct it once without changing values; never repeat a possibly accepted call. After `runtime_action.describe`, emit the write." :
|
|
5570
|
+
input.hasGovernedMcp && input.executorKind === "pi" && input.managedMcpToolMode === "proxy_only" ? "- For proxy-only Pi MCP writes, put the complete target argument object directly in actual `mcp` string `args` as strict JSON; escape quotes, backslashes, and control characters. Do not stage or print tool calls. If inner JSON syntax fails, correct it once without changing values; never repeat a possibly accepted call. After `runtime_action.describe`, emit the write." : ""
|
|
5546
5571
|
].filter(Boolean).join("\n");
|
|
5547
5572
|
}
|
|
5548
5573
|
function approvalContinuationText(input) {
|
|
@@ -5666,14 +5691,14 @@ function continuationRuntimeActionEnvelope(context) {
|
|
|
5666
5691
|
return envelope;
|
|
5667
5692
|
}
|
|
5668
5693
|
function managedDirectToolName(input, canonicalName) {
|
|
5669
|
-
if (input.managedMcpToolMode !== "direct_typed"
|
|
5694
|
+
if (input.managedMcpToolMode !== "direct_typed") return null;
|
|
5670
5695
|
const catalog = asRecord(input.managedMcpToolCatalog);
|
|
5671
5696
|
const tools = Array.isArray(catalog.tools) ? catalog.tools.map(asRecord) : [];
|
|
5672
5697
|
const match = tools.find((tool) => readString(tool.name) === canonicalName);
|
|
5673
5698
|
return readString(match?.exposedName) ?? null;
|
|
5674
5699
|
}
|
|
5675
5700
|
function managedPiMcpProxyAvailable(input) {
|
|
5676
|
-
return input.managedMcpToolMode === "proxy_only"
|
|
5701
|
+
return input.managedMcpToolMode === "proxy_only";
|
|
5677
5702
|
}
|
|
5678
5703
|
function managedPiMcpProxyToolName(canonicalName) {
|
|
5679
5704
|
const name = readString(canonicalName);
|
|
@@ -5701,7 +5726,7 @@ A standalone continuation action is unavailable in this repair lane. First persi
|
|
|
5701
5726
|
}
|
|
5702
5727
|
if (!input.hasGovernedMcp) {
|
|
5703
5728
|
return `${heading}
|
|
5704
|
-
Runtime Action continuation is unavailable: managed
|
|
5729
|
+
Runtime Action continuation is unavailable: managed MCP capability is missing. Do not guess a tool call.`;
|
|
5705
5730
|
}
|
|
5706
5731
|
const envelope = continuationRuntimeActionEnvelope(asRecord(input.context));
|
|
5707
5732
|
if (!envelope) {
|
|
@@ -5787,11 +5812,19 @@ function runtimeAuthorizationText(context, mode, { suppressOrdinaryCompletionCon
|
|
|
5787
5812
|
delivery.mode === "required" ? "When every acceptance criterion is satisfied and the exact current Delivery Manifest is ready, record the final execution disposition with update_parent status in_progress and a concise evidence summary, then end the run successfully without creating a final review interaction." : "When every acceptance criterion is satisfied, record the final execution disposition with update_parent status in_progress and a concise evidence summary, then end the run successfully without creating a final review interaction.",
|
|
5788
5813
|
evidenceAutoAcceptance ? delivery.mode === "required" ? "Only after the run and command succeed does the Server validate the exact current Delivery Manifest and terminal Outcome evidence, auto-accept the Outcome, and finalize the issue as done atomically. This evidence-auto path does not create a Board review; report the actual Server-owned terminal disposition without implying a handoff." : "Only after the run and command succeed does the Server validate the terminal Outcome evidence, auto-accept the Outcome, and finalize the issue as done atomically. This evidence-auto path does not create a Board review; report the actual Server-owned terminal disposition without implying a handoff." : delivery.mode === "required" ? "Only after the run and command succeed does the Server bind the exact current Delivery Manifest and terminal Outcome evidence, create the formal Board review before generic continuation handoff is evaluated, and move the issue to in_review. Board acceptance then finalizes the issue as done atomically." : "Only after the run and command succeed does the Server bind the terminal Outcome evidence, create the formal Board review before generic continuation handoff is evaluated, and move the issue to in_review. Board acceptance then finalizes the issue as done atomically."
|
|
5789
5814
|
].join(" ") : "";
|
|
5790
|
-
const
|
|
5815
|
+
const organizationCapabilityAllowed = asRecord(envelope.organizationCapability).allowed === true;
|
|
5816
|
+
const organizationMutationAuthorized = allowed.has("organization_mutation");
|
|
5817
|
+
const authorizationContract = Object.keys(optionIds).length > 0 ? [
|
|
5791
5818
|
`Current allowed action classes: ${[...allowed].join(", ") || "task_governance"}.`,
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5819
|
+
`Organization capability (persistent Agent permission): ${organizationCapabilityAllowed ? "allowed" : "disabled"}.`,
|
|
5820
|
+
`Organization capability revision: ${readString(asRecord(asRecord(envelope.organizationCapability).source).revision) ?? "missing"}.`,
|
|
5821
|
+
`Run-scoped organization_mutation authorization: ${organizationMutationAuthorized ? "authorized" : "not_authorized"}.`,
|
|
5822
|
+
organizationCapabilityAllowed && organizationMutationAuthorized ? "Persistent organization capability and run-scoped authorization are both present. Use agent_hire for bounded organization changes; do not request another authorization or staffing interaction." : organizationCapabilityAllowed ? "If organization_mutation is required, call request_runtime_authorization with authorizationClass=organization_mutation and a stable idempotencyKey for the bounded organization-change scope. Wait for its accepted continuation; do not create a generic checkbox or staffing request." : "Persistent organization capability is disabled. Use the Server-resolved create_staffing_request route; staffing acceptance does not grant organization_mutation.",
|
|
5823
|
+
...missing.length > 0 ? [
|
|
5824
|
+
"Canonical authorization option ids are informational output from the Server-owned target:",
|
|
5825
|
+
...missing.map((entry) => `- ${entry.authorizationClass}: ${entry.optionId}`)
|
|
5826
|
+
] : [],
|
|
5827
|
+
"Never use create_interaction, request_confirmation, comment metadata, or free text to authorize a runtime action class."
|
|
5795
5828
|
].join("\n") : "";
|
|
5796
5829
|
return [
|
|
5797
5830
|
completionContract,
|
|
@@ -5979,15 +6012,15 @@ function piMcpUsageText(input) {
|
|
|
5979
6012
|
].join("\n");
|
|
5980
6013
|
}
|
|
5981
6014
|
function piDirectTypedToolsText(input) {
|
|
5982
|
-
if (!input.hasGovernedMcp || input.executorKind !== "pi" || input.managedMcpToolMode !== "direct_typed"
|
|
6015
|
+
if (!input.hasGovernedMcp || input.executorKind !== "pi" || input.managedMcpToolMode !== "direct_typed") return "";
|
|
5983
6016
|
const catalog = asRecord(input.managedMcpToolCatalog);
|
|
5984
6017
|
const tools = (Array.isArray(catalog.tools) ? catalog.tools : []).map(asRecord).map((tool) => ({ name: readString(tool.exposedName), description: readString(tool.description) })).filter((tool) => tool.name);
|
|
5985
6018
|
if (tools.length === 0) {
|
|
5986
|
-
return "Direct typed
|
|
6019
|
+
return "Direct typed tools are unavailable because the run catalog snapshot is empty. Do not guess a proxy or tool name.";
|
|
5987
6020
|
}
|
|
5988
6021
|
return [
|
|
5989
|
-
|
|
5990
|
-
|
|
6022
|
+
"Use only the attested direct typed tools already present in the provider tool definitions. Call their exact names with object arguments; do not call the `mcp` proxy and do not stringify an inner argument envelope.",
|
|
6023
|
+
"A tool absent from the provider tool definitions is unavailable in this run. Do not infer a namespace or fall back to REST/bare MCP."
|
|
5991
6024
|
].join("\n");
|
|
5992
6025
|
}
|
|
5993
6026
|
function sourceAcquisitionTaskSection(input) {
|
|
@@ -6130,7 +6163,7 @@ var CONTEXT_AVAILABILITY_SECTION_TITLES = Object.freeze({
|
|
|
6130
6163
|
runtime_decomposition_requirement: "Required Task Decomposition",
|
|
6131
6164
|
task_context_authority: "Task Context Authority",
|
|
6132
6165
|
verified_company_context: "Verified Company Context",
|
|
6133
|
-
pi_mcp_usage: "Pi
|
|
6166
|
+
pi_mcp_usage: "Pi MCP Usage",
|
|
6134
6167
|
governed_reads: "Governed External Reads",
|
|
6135
6168
|
optional_task_wiki_context: "Optional Company Wiki Context",
|
|
6136
6169
|
agent_instructions: "Agent Instructions",
|
|
@@ -6367,7 +6400,7 @@ ${resolvedDependencies.details.content}` : ""
|
|
|
6367
6400
|
{ name: "task", title: "Task Context", priority: 90, sourceRef: taskSourceRefs, originalContent: [taskText, taskCommentRefGuidance(input, taskText)].filter(Boolean).join("\n"), content: includeTask ? [taskText, taskCommentRefGuidance(input, taskText)].filter(Boolean).join("\n") : "", truncationReason: includeTask ? null : "mode_selection" },
|
|
6368
6401
|
...taskAcceptanceContract ? [{ name: "task_acceptance_contract", title: "Task Acceptance Contract", priority: 100, ...taskAcceptanceContract }] : [],
|
|
6369
6402
|
...governedBusinessState ? [{ name: "governed_business_state", title: "Governed Business State", priority: 99, ...governedBusinessState }] : [],
|
|
6370
|
-
{ name: "continuation_summary", title:
|
|
6403
|
+
{ name: "continuation_summary", title: continuationSectionTitle(context), priority: 97, sourceRef: readString(asRecord(context.paperclipContinuationSummary).key) ?? `issue:${input.issueId ?? "unknown"}`, observedAt: readString(asRecord(context.paperclipContinuationSummary).updatedAt), originalContent: continuationSummary, content: mode === "cold" ? "" : continuationSummary, truncationReason: mode === "cold" ? "mode_selection" : null },
|
|
6371
6404
|
...resolvedDependencyContent ? [{
|
|
6372
6405
|
name: "resolved_dependencies",
|
|
6373
6406
|
title: "Resolved Dependency Outputs",
|
|
@@ -6384,7 +6417,7 @@ ${resolvedDependencies.details.content}` : ""
|
|
|
6384
6417
|
...verifiedCompanyContext.content ? [{ name: "verified_company_context", title: "Verified Company Context", priority: 96, sourceRef: verifiedCompanyContext.sourceRef, observedAt: verifiedCompanyContext.observedAt, freshness: { kind: "run_snapshot" }, content: verifiedCompanyContext.content }] : [],
|
|
6385
6418
|
...piMcpUsage ? [{
|
|
6386
6419
|
name: "pi_mcp_usage",
|
|
6387
|
-
title: "Pi
|
|
6420
|
+
title: "Pi MCP Usage",
|
|
6388
6421
|
priority: 96,
|
|
6389
6422
|
sourceRef: "amaster_governed_mcp_proxy_contract",
|
|
6390
6423
|
content: piMcpUsage
|
|
@@ -10089,7 +10122,7 @@ var source_acquisition_compatibility_default = {
|
|
|
10089
10122
|
};
|
|
10090
10123
|
|
|
10091
10124
|
// src/amaster-runtime-daemon.mjs
|
|
10092
|
-
var CONNECTOR_VERSION = "0.1.1-beta.
|
|
10125
|
+
var CONNECTOR_VERSION = "0.1.1-beta.47";
|
|
10093
10126
|
var CONNECTOR_CONTRACT_VERSION = "2026-06-04.v1";
|
|
10094
10127
|
var SOURCE_ACQUISITION_CAPABILITY = source_acquisition_compatibility_default.profileVersion;
|
|
10095
10128
|
var SOURCE_ACQUISITION_PROFILE_VERSION = source_acquisition_compatibility_default.profileVersion;
|
package/dist/amaster-runtime.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { basename, dirname, join, resolve } from "node:path";
|
|
|
6
6
|
import { homedir, hostname } from "node:os";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
|
|
9
|
-
const CONNECTOR_VERSION = "0.1.1-beta.
|
|
9
|
+
const CONNECTOR_VERSION = "0.1.1-beta.47";
|
|
10
10
|
|
|
11
11
|
const CAPABILITIES = [
|
|
12
12
|
"remote_registration",
|