@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 HYBRID_DIRECT_TYPED_V1_TOOL_NAMES = /* @__PURE__ */ new Set([
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.read_issue_evidence"
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 sourceAcquisitionCatalog = mcpToolMode === MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE && tools.length === SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES.size && [...SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES].every((name) => declaredToolNames.has(name));
2980
- const admittedToolNames = mcpToolMode === MANAGED_PI_HYBRID_MCP_TOOL_MODE ? HYBRID_DIRECT_TYPED_V1_TOOL_NAMES : sourceAcquisitionCatalog ? SOURCE_ACQUISITION_DIRECT_TYPED_V1_TOOL_NAMES : /* @__PURE__ */ new Set([...DIRECT_TYPED_V1_TOOL_NAMES, ...DIAGNOSIS_WIKI_READ_DIRECT_TYPED_V1_TOOL_NAMES]);
2981
- const directTypedSizeValid = mcpToolMode !== MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE || sourceAcquisitionCatalog || tools.length === DIRECT_TYPED_V1_TOOL_NAMES.size || tools.length === DIRECT_TYPED_V1_TOOL_NAMES.size + DIAGNOSIS_WIKI_READ_DIRECT_TYPED_V1_TOOL_NAMES.size;
2982
- if (!directTypedSizeValid || mcpToolMode === MANAGED_PI_HYBRID_MCP_TOOL_MODE && tools.length !== admittedToolNames.size) {
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 !== MANAGED_PI_HYBRID_MCP_TOOL_MODE && mcpToolMode !== MANAGED_PI_DIRECT_TYPED_MCP_TOOL_MODE) {
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: mcpToolMode === MANAGED_PI_HYBRID_MCP_TOOL_MODE ? "required" : "forbidden",
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 governed 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).`;
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 governed tools wiki_search / wiki_read_page / wiki_list_pages / wiki_read_source / wiki_write_page via the amaster MCP. Use them for governed lookup and durable Wiki updates; Company Knowledge operations must use the exact operationId and sourceRefs named by the issue.";
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." : input.hasGovernedMcp && input.executorKind === "pi" && input.managedMcpToolMode === "hybrid" ? "- For hybrid Pi MCP writes, call direct `runtime_action_describe`, then put long-tail write arguments in `mcp.args` as strict JSON. Never stage, print, or repeat a possibly accepted call." : ""
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" && input.managedMcpToolMode !== "hybrid") return null;
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" || input.managedMcpToolMode === "hybrid";
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 governed MCP capability is missing. Do not guess a tool call.`;
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 authorizationContract = missing.length > 0 ? [
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
- "If the task requires a missing runtime action class, create a request_checkbox_confirmation interaction using the exact option id below and wait for its accepted continuation:",
5793
- ...missing.map((entry) => `- ${entry.authorizationClass}: ${entry.optionId}`),
5794
- "Never use request_confirmation to authorize a runtime action class."
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" && input.managedMcpToolMode !== "hybrid") return "";
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 governed tools are unavailable because the run catalog snapshot is empty. Do not guess a proxy or tool name.";
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
- input.managedMcpToolMode === "hybrid" ? "Use the attested direct typed tools already present in the provider tool definitions with object arguments; do not duplicate them through the `mcp` proxy." : "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.",
5990
- input.managedMcpToolMode === "hybrid" ? "For a canonical tool absent from those definitions, first use the direct typed `runtime_action_describe`, then call the single managed `mcp` proxy with stringified inner `args`. Never infer an alias, use REST, or bypass the governed Gateway." : "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."
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 Governed MCP Usage",
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: "Continuation Summary", 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 },
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 Governed MCP Usage",
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.45";
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;
@@ -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.45";
9
+ const CONNECTOR_VERSION = "0.1.1-beta.47";
10
10
 
11
11
  const CAPABILITIES = [
12
12
  "remote_registration",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amaster.ai/employee-runtime-connector",
3
- "version": "0.1.1-beta.45",
3
+ "version": "0.1.1-beta.47",
4
4
  "description": "MirrorX runtime connector CLI and daemon",
5
5
  "license": "MIT",
6
6
  "type": "module",