@amaster.ai/employee-runtime-connector 0.1.1-beta.350 → 0.1.1-beta.352

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.
@@ -6168,6 +6168,12 @@ var ERROR_PRESENTATIONS = {
6168
6168
  nextAction: null,
6169
6169
  tone: "danger"
6170
6170
  },
6171
+ pi_provider_request_timeout: {
6172
+ label: "\u6A21\u578B\u8BF7\u6C42\u8D85\u65F6",
6173
+ summary: "\u6A21\u578B\u670D\u52A1\u672A\u5728\u8BF7\u6C42\u65F6\u9650\u5185\u5B8C\u6210\u54CD\u5E94\uFF0C\u672C\u6B21\u6267\u884C\u5DF2\u505C\u6B62\u3002",
6174
+ nextAction: "\u7CFB\u7EDF\u5C06\u81EA\u52A8\u91CD\u8BD5\uFF1B\u82E5\u4ECD\u672A\u6062\u590D\uFF0C\u8BF7\u7A0D\u540E\u91CD\u65B0\u6267\u884C\u3002",
6175
+ tone: "warning"
6176
+ },
6171
6177
  runtime_connector_command_failed: {
6172
6178
  label: "\u6267\u884C\u547D\u4EE4\u5931\u8D25",
6173
6179
  summary: "\u8FD0\u884C\u5668\u62A5\u544A\u547D\u4EE4\u672A\u80FD\u5B8C\u6210\uFF0C\u5177\u4F53\u539F\u56E0\u8BF7\u67E5\u770B\u9519\u8BEF\u8BE6\u60C5\u3002",
@@ -9028,6 +9034,28 @@ var discoveryResearchSourceBindingV1Schema = external_exports.object({
9028
9034
  queryScopeHash: sha256Schema5,
9029
9035
  openConnector: openConnectorDiscoverySourceSchema.optional()
9030
9036
  }).strict();
9037
+ var openConnectorDiscoveryActionV2Schema = external_exports.object({
9038
+ actionId: external_exports.string().trim().min(1).max(256),
9039
+ guideHash: sha256Schema5,
9040
+ inputSchema: external_exports.record(external_exports.string(), external_exports.unknown()),
9041
+ outputSchema: external_exports.record(external_exports.string(), external_exports.unknown()),
9042
+ followUpActions: external_exports.array(external_exports.object({
9043
+ actionId: external_exports.string().trim().min(1).max(256)
9044
+ }).strict()).max(20)
9045
+ }).strict();
9046
+ var discoveryResearchSourceBindingV2Schema = external_exports.object({
9047
+ version: external_exports.literal(2),
9048
+ connectionId: external_exports.string().uuid(),
9049
+ providerKey: external_exports.string().trim().min(1).max(160),
9050
+ objectType: external_exports.string().trim().min(1).max(160).regex(/^[a-z0-9][a-z0-9._-]*$/),
9051
+ queryScopeHash: sha256Schema5,
9052
+ openConnector: external_exports.object({
9053
+ service: external_exports.string().trim().min(1).max(128),
9054
+ connectionName: external_exports.string().trim().min(1).max(256).nullable(),
9055
+ connectionKeyHash: sha256Schema5,
9056
+ actions: external_exports.array(openConnectorDiscoveryActionV2Schema).min(1).max(20)
9057
+ }).strict()
9058
+ }).strict();
9031
9059
  var discoveryResearchBriefV1Schema = external_exports.object({
9032
9060
  version: external_exports.literal(1),
9033
9061
  objective: external_exports.string().trim().min(1).max(2e3),
@@ -9064,6 +9092,57 @@ var frozenDiscoveryResearchV1Schema = external_exports.object({
9064
9092
  evidenceValidityMs: positiveBoundedInteger(31 * 24 * 60 * 60 * 1e3),
9065
9093
  startedAt: external_exports.string().datetime({ offset: true })
9066
9094
  }).strict();
9095
+ var discoveryResearchTargetV2Schema = external_exports.object({
9096
+ targetKey: external_exports.string().trim().min(1).max(500),
9097
+ kind: external_exports.enum(["gap", "criterion"]),
9098
+ criterionId: external_exports.string().uuid(),
9099
+ criterionIndex: external_exports.number().int().min(0).max(1e3),
9100
+ criterionText: external_exports.string().trim().min(1).max(4e3),
9101
+ gapId: external_exports.string().uuid().nullable(),
9102
+ gapAuthorityRevision: external_exports.number().int().positive().nullable(),
9103
+ selectionRevision: external_exports.number().int().positive(),
9104
+ candidateSetHash: sha256Schema5,
9105
+ resetReason: external_exports.enum(["goal_revision_changed", "candidate_set_changed"]).nullable()
9106
+ }).strict().superRefine((value, ctx) => {
9107
+ if (value.kind === "gap" && (!value.gapId || !value.gapAuthorityRevision)) {
9108
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["gapId"], message: "A gap target requires frozen gap authority" });
9109
+ }
9110
+ if (value.kind === "criterion" && (value.gapId || value.gapAuthorityRevision)) {
9111
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["gapId"], message: "A criterion target cannot carry gap authority" });
9112
+ }
9113
+ });
9114
+ var frozenDiscoveryResearchV2Schema = external_exports.object({
9115
+ version: external_exports.literal(2),
9116
+ mode: external_exports.literal("open_research"),
9117
+ routineRunId: external_exports.string().uuid(),
9118
+ objective: external_exports.string().trim().min(1).max(2e3),
9119
+ researchQuestion: external_exports.string().trim().min(1).max(2e3),
9120
+ goalId: external_exports.string().uuid(),
9121
+ goalRevision: external_exports.string().trim().min(1).max(160),
9122
+ target: discoveryResearchTargetV2Schema,
9123
+ sourceBindingRevision: sha256Schema5,
9124
+ sourceBinding: discoveryResearchSourceBindingV2Schema,
9125
+ coverageMode: external_exports.literal("targeted_goal_criterion"),
9126
+ maxRuntimeMs: positiveBoundedInteger(864e5),
9127
+ maxProviderReads: positiveBoundedInteger(100),
9128
+ maxModelTokens: positiveBoundedInteger(1e7),
9129
+ finalizationReserveTokens: positiveBoundedInteger(1e5),
9130
+ researchTokenLimit: positiveBoundedInteger(1e7),
9131
+ evidenceValidityMs: positiveBoundedInteger(31 * 24 * 60 * 60 * 1e3),
9132
+ startedAt: external_exports.string().datetime({ offset: true })
9133
+ }).strict().superRefine((value, ctx) => {
9134
+ if (value.researchTokenLimit !== value.maxModelTokens - value.finalizationReserveTokens) {
9135
+ ctx.addIssue({
9136
+ code: external_exports.ZodIssueCode.custom,
9137
+ path: ["researchTokenLimit"],
9138
+ message: "researchTokenLimit must equal maxModelTokens minus finalizationReserveTokens"
9139
+ });
9140
+ }
9141
+ });
9142
+ var frozenDiscoveryResearchSchema = external_exports.union([
9143
+ frozenDiscoveryResearchV1Schema,
9144
+ frozenDiscoveryResearchV2Schema
9145
+ ]);
9067
9146
  var discoveryProviderEvidenceReceiptV1Schema = external_exports.object({
9068
9147
  version: external_exports.literal(1),
9069
9148
  sourceBindingRevision: sha256Schema5,
@@ -9112,6 +9191,42 @@ function refineCompleteDiscoveryResearchInputV1(value, ctx) {
9112
9191
  }
9113
9192
  }
9114
9193
  var completeDiscoveryResearchInputV1Schema = external_exports.object(completeDiscoveryResearchInputV1Fields).strict().superRefine(refineCompleteDiscoveryResearchInputV1);
9194
+ var completeDiscoveryResearchInputV2Fields = {
9195
+ version: external_exports.literal(2),
9196
+ status: external_exports.enum(["completed", "partial", "timed_out", "failed"]),
9197
+ findingIds: external_exports.array(external_exports.string().uuid()).max(50),
9198
+ examinedEvidenceRefs: external_exports.array(external_exports.object({
9199
+ invocationId: external_exports.string().uuid(),
9200
+ externalObjectId: external_exports.string().uuid().nullable(),
9201
+ sourceRevision: external_exports.string().trim().min(1).max(500).nullable(),
9202
+ contentHash: sha256Schema5.nullable()
9203
+ }).strict()).max(1e4),
9204
+ coverageComplete: external_exports.boolean(),
9205
+ summary: external_exports.string().trim().min(1).max(4e3),
9206
+ inferences: external_exports.array(external_exports.string().trim().min(1).max(1e3)).max(20),
9207
+ unknowns: external_exports.array(external_exports.string().trim().min(1).max(1e3)).max(20),
9208
+ coverageLimitations: external_exports.array(external_exports.string().trim().min(1).max(1e3)).max(20),
9209
+ noActionReason: external_exports.string().trim().min(1).max(2e3).nullable(),
9210
+ errorCode: external_exports.string().trim().min(1).max(160).nullable(),
9211
+ traceId: external_exports.string().trim().min(1).max(200).nullable()
9212
+ };
9213
+ function refineCompleteDiscoveryResearchInputV2(value, ctx) {
9214
+ const evidenceKeys = value.examinedEvidenceRefs.map((reference) => JSON.stringify(reference));
9215
+ if (new Set(evidenceKeys).size !== evidenceKeys.length) {
9216
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["examinedEvidenceRefs"], message: "Examined evidence refs must be unique" });
9217
+ }
9218
+ if (value.status === "completed" && value.findingIds.length === 0 && !value.noActionReason) {
9219
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["noActionReason"], message: "A completed no-action result requires a bounded reason" });
9220
+ }
9221
+ if (value.status === "failed" && !value.errorCode) {
9222
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["errorCode"], message: "A failed research result requires an errorCode" });
9223
+ }
9224
+ }
9225
+ var completeDiscoveryResearchInputV2Schema = external_exports.object(completeDiscoveryResearchInputV2Fields).strict().superRefine(refineCompleteDiscoveryResearchInputV2);
9226
+ var completeDiscoveryResearchInputSchema = external_exports.union([
9227
+ completeDiscoveryResearchInputV1Schema,
9228
+ completeDiscoveryResearchInputV2Schema
9229
+ ]);
9115
9230
  var customerFeedbackDiscoveryScopeV1Schema = external_exports.object({
9116
9231
  version: external_exports.literal(1),
9117
9232
  goalId: external_exports.string().uuid(),
@@ -9162,11 +9277,14 @@ var discoveryRunExecutionOutcomeSchema = external_exports.enum([
9162
9277
  "source_unavailable",
9163
9278
  "blocked_by_policy",
9164
9279
  "budget_exhausted",
9280
+ "timed_out",
9165
9281
  "failed"
9166
9282
  ]);
9167
9283
  var discoveryRunSignalOutcomeSchema = external_exports.enum([
9168
9284
  "signal_found",
9169
9285
  "no_signal_in_scope",
9286
+ "no_action_within_scope",
9287
+ "insufficient_evidence",
9170
9288
  "signal_unready",
9171
9289
  "not_assessable"
9172
9290
  ]);
@@ -27646,7 +27764,8 @@ function sanitizeRuntimeWebEvidence(input) {
27646
27764
  // src/amaster-runtime-daemon/executor-protocol/pi.mjs
27647
27765
  var PI_PROVIDER_AUTH_RE = /(?:(?:\b401\b|\b403\b)[^\n]*(?:unauthorized|forbidden|auth(?:entication|orization)?|api[_\s-]?key)|(?:invalid|missing|expired|revoked)\s+(?:provider\s+)?api[_\s-]?key|provider\s+authentication\s+required)/i;
27648
27766
  var PI_PROVIDER_QUOTA_EXHAUSTED_RE = /(?:\binsufficient[_\s-]?user[_\s-]?quota\b|河狸币余额不足|\b402\b[^\n]*(?:余额不足|insufficient[_\s-]?balance|payment\s+required))/i;
27649
- var PI_PROVIDER_TRANSIENT_RE = /(?:Stream ended without finish_reason|\b(?:429|5\d{2})\b|rate[-\s]?limit(?:ed)?|too\s+many\s+requests|billing\s+admission\s+failed|service\s+unavailable|upstream[^\n]*(?:unavailable|failed|timeout)|connect(?:ion)?[^\n]*refused|temporar(?:y|ily)[^\n]*(?:unavailable|failed)|try\s+again\s+later)/i;
27767
+ var PI_PROVIDER_REQUEST_TIMEOUT_RE = /^Request timed out\.?$/i;
27768
+ var PI_PROVIDER_TRANSIENT_RE = /(?:Request timed out|Stream ended without finish_reason|\b(?:429|5\d{2})\b|rate[-\s]?limit(?:ed)?|too\s+many\s+requests|billing\s+admission\s+failed|service\s+unavailable|upstream[^\n]*(?:unavailable|failed|timeout)|connect(?:ion)?[^\n]*refused|temporar(?:y|ily)[^\n]*(?:unavailable|failed)|try\s+again\s+later)/i;
27650
27769
  var PI_PROVIDER_PROTOCOL_RE = /provider[^\n]*finish_reason[^\n]*unexpected_state/i;
27651
27770
  var PI_PROVIDER_RETRY_AFTER_SECONDS_RE = /retry[-\s]?after\s*[:=]?\s*(\d{1,6})\s*(?:seconds?|secs?|s)\b/i;
27652
27771
  var PI_TERMINAL_CLEANUP_PERMISSION_RE = /(?:\bkill\b[^\n]*\bEPERM\b|\bEPERM\b[^\n]*\bkill\b)/i;
@@ -27765,6 +27884,12 @@ function extractPiProviderRetryNotBefore(errorMessage, now) {
27765
27884
  function classifyPiProviderError(input, now = /* @__PURE__ */ new Date()) {
27766
27885
  const errorMessage = readString(asRecord(input).errorMessage);
27767
27886
  if (!errorMessage) return null;
27887
+ if (PI_PROVIDER_REQUEST_TIMEOUT_RE.test(errorMessage)) {
27888
+ return {
27889
+ errorCode: "pi_provider_request_timeout",
27890
+ errorFamily: "transient_upstream"
27891
+ };
27892
+ }
27768
27893
  if (PI_PROVIDER_PROTOCOL_RE.test(errorMessage)) {
27769
27894
  return {
27770
27895
  errorCode: "pi_provider_protocol_failure",
@@ -33818,7 +33943,7 @@ function assertRequiredTaskAttachmentMaterialized(input, materialized) {
33818
33943
  }
33819
33944
 
33820
33945
  // src/amaster-runtime-daemon.mjs
33821
- var CONNECTOR_VERSION = "0.1.1-beta.350";
33946
+ var CONNECTOR_VERSION = "0.1.1-beta.352";
33822
33947
  var CONNECTOR_CONTRACT_VERSION = "2026-06-04.v1";
33823
33948
  var daemonRequire = createRequire(import.meta.url);
33824
33949
  var MAX_CHECKPOINT_BYTES = 20 * 1024 * 1024;
@@ -39317,7 +39442,7 @@ async function executeRunCommand(config, command) {
39317
39442
  });
39318
39443
  } catch (err) {
39319
39444
  const rolloutError = `${executor.kind}_managed_mcp_session_rollout_failed: ${err instanceof Error ? err.message : String(err)}`;
39320
- if (approvalRequiredSession || config.checkpointUploadEnabled) {
39445
+ if (approvalRequiredSession) {
39321
39446
  nativeSessionRolloutError = rolloutError;
39322
39447
  } else {
39323
39448
  nativeSessionRollout = {
@@ -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.350";
10
+ const CONNECTOR_VERSION = "0.1.1-beta.352";
11
11
 
12
12
  const CONFIG_KEY_MAP = new Map([
13
13
  ["server_url", "AMASTER_EMPLOYEE_SERVER_URL"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amaster.ai/employee-runtime-connector",
3
- "version": "0.1.1-beta.350",
3
+ "version": "0.1.1-beta.352",
4
4
  "description": "MirrorX runtime connector CLI and daemon",
5
5
  "license": "MIT",
6
6
  "type": "module",