@ever-works/contracts 1.0.2 → 1.0.4

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/dist/index.cjs CHANGED
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var connectContracts = require('@ever-co/connect-contracts');
4
+
3
5
  // src/domain/domain.types.ts
4
6
  var DomainType = /* @__PURE__ */ ((DomainType2) => {
5
7
  DomainType2["SOFTWARE"] = "software";
@@ -5822,6 +5824,9 @@ var FLEET_JOB_MAX_LEASE_BATCH = 5;
5822
5824
  var FLEET_JOB_MAX_PAYLOAD_BYTES = 256 * 1024;
5823
5825
  var FLEET_JOB_MAX_RESULT_BYTES = 256 * 1024;
5824
5826
  var FLEET_JOB_MAX_ERROR_LENGTH = 4096;
5827
+ var FLEET_JOB_DEFAULT_RETENTION_DAYS = 30;
5828
+ var FLEET_JOB_MIN_RETENTION_DAYS = 1;
5829
+ var FLEET_JOB_MAX_RETENTION_DAYS = 3650;
5825
5830
  var FLEET_JOB_MAX_REQUIRED_CAPABILITIES = 8;
5826
5831
  function clampLeaseTtlSec(value) {
5827
5832
  if (typeof value !== "number" || !Number.isFinite(value)) {
@@ -5912,6 +5917,23 @@ var FLEET_AGENT_EXECUTION_MAX_TIMEOUT_SEC = 1800;
5912
5917
  var FLEET_AGENT_EXECUTION_MAX_INSTRUCTIONS_BYTES = 160 * 1024;
5913
5918
  var FLEET_AGENT_EXECUTION_MAX_BUDGET_USD = 500;
5914
5919
  var FLEET_AGENT_EXECUTION_MODEL_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,199}$/;
5920
+ var FLEET_AGENT_MODEL_SESSION_ID_PATTERN = /^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/;
5921
+ function isFleetAgentModelSessionId(value) {
5922
+ return typeof value === "string" && FLEET_AGENT_MODEL_SESSION_ID_PATTERN.test(value);
5923
+ }
5924
+ function fleetAgentExecutionProviderSupportsSessionResume(provider) {
5925
+ return provider === "claude-code";
5926
+ }
5927
+ function normalizeFleetAgentModelResume(raw) {
5928
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
5929
+ const input = raw;
5930
+ if (!isFleetAgentModelSessionId(input.sessionId)) return null;
5931
+ if (!isFleetAgentModelSessionId(input.nodeId)) return null;
5932
+ const instructions = typeof input.instructions === "string" ? input.instructions : "";
5933
+ if (!instructions.trim()) return null;
5934
+ if (byteLength(instructions) > FLEET_AGENT_EXECUTION_MAX_INSTRUCTIONS_BYTES) return null;
5935
+ return { sessionId: input.sessionId, nodeId: input.nodeId, instructions };
5936
+ }
5915
5937
  var FleetAgentExecutionError = class extends Error {
5916
5938
  constructor(message) {
5917
5939
  super(message);
@@ -5995,11 +6017,88 @@ function normalizeFleetAgentModelExecution(raw) {
5995
6017
  const grants = normalizeFleetRunEnvGrants(input.envGrants);
5996
6018
  if (grants.length > 0) out.envGrants = grants;
5997
6019
  }
6020
+ const resume = normalizeFleetAgentModelResume(input.resume);
6021
+ if (resume) out.resume = resume;
5998
6022
  return out;
5999
6023
  }
6000
6024
  function byteLength(value) {
6001
6025
  return new TextEncoder().encode(value).length;
6002
6026
  }
6027
+ var FLEET_AGENT_TASK_MODEL_RESUME_OUTCOMES = [
6028
+ "resumed",
6029
+ "fell-back",
6030
+ "skipped"
6031
+ ];
6032
+ var FLEET_AGENT_TASK_TIMELINE_MAX_STEPS = 200;
6033
+ var FLEET_AGENT_TASK_TIMELINE_MAX_BYTES = 48 * 1024;
6034
+ var FLEET_AGENT_TASK_TIMELINE_TEXT_MAX_CHARS = 1e3;
6035
+ var FLEET_AGENT_TASK_TIMELINE_ARGS_MAX_CHARS = 200;
6036
+ var FLEET_AGENT_TASK_TIMELINE_NAME_MAX_CHARS = 80;
6037
+ var FLEET_AGENT_TASK_TRANSCRIPT_MAX_BYTES = 64 * 1024;
6038
+ var TIMELINE_MAX_DROPPED = 1e9;
6039
+ function normalizeFleetAgentTaskTimeline(raw, reportedDropped) {
6040
+ const entries = Array.isArray(raw) ? raw : [];
6041
+ const steps = [];
6042
+ let dropped = timelineCount(reportedDropped);
6043
+ for (const entry of entries) {
6044
+ if (steps.length >= FLEET_AGENT_TASK_TIMELINE_MAX_STEPS) {
6045
+ dropped += 1;
6046
+ continue;
6047
+ }
6048
+ const step = normalizeTimelineStep(entry);
6049
+ if (step) steps.push(step);
6050
+ else dropped += 1;
6051
+ }
6052
+ return { steps, dropped: Math.min(dropped, TIMELINE_MAX_DROPPED) };
6053
+ }
6054
+ function normalizeTimelineStep(entry) {
6055
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) return null;
6056
+ const record = entry;
6057
+ const atMs = timelineMillis(record.atMs);
6058
+ if (record.kind === "assistant-message") {
6059
+ const text = typeof record.text === "string" ? timelineText(record.text, FLEET_AGENT_TASK_TIMELINE_TEXT_MAX_CHARS) : null;
6060
+ if (!text || !text.value) return null;
6061
+ return {
6062
+ kind: "assistant-message",
6063
+ atMs,
6064
+ text: text.value,
6065
+ ...text.cut || record.truncated === true ? { truncated: true } : {}
6066
+ };
6067
+ }
6068
+ if (record.kind === "tool-call") {
6069
+ const name = typeof record.toolName === "string" ? timelineText(record.toolName, FLEET_AGENT_TASK_TIMELINE_NAME_MAX_CHARS) : null;
6070
+ if (!name || !name.value) return null;
6071
+ const callId = typeof record.callId === "string" ? timelineText(record.callId, FLEET_AGENT_TASK_TIMELINE_NAME_MAX_CHARS).value : "";
6072
+ const args = typeof record.argsSummary === "string" ? timelineText(record.argsSummary, FLEET_AGENT_TASK_TIMELINE_ARGS_MAX_CHARS) : null;
6073
+ const status = record.status === "ok" || record.status === "error" ? record.status : "unknown";
6074
+ return {
6075
+ kind: "tool-call",
6076
+ atMs,
6077
+ toolName: name.value,
6078
+ ...callId ? { callId } : {},
6079
+ ...args && args.value ? { argsSummary: args.value } : {},
6080
+ status,
6081
+ durationMs: timelineMillis(record.durationMs),
6082
+ ...args?.cut || record.truncated === true ? { truncated: true } : {}
6083
+ };
6084
+ }
6085
+ return null;
6086
+ }
6087
+ function timelineText(value, maxChars) {
6088
+ const clean = stripControlCharacters(value).trim();
6089
+ const points = Array.from(clean);
6090
+ if (points.length <= maxChars) return { value: clean, cut: false };
6091
+ return {
6092
+ value: `${points.slice(0, maxChars - 1).join("").trimEnd()}\u2026`,
6093
+ cut: true
6094
+ };
6095
+ }
6096
+ function timelineMillis(value) {
6097
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : null;
6098
+ }
6099
+ function timelineCount(value) {
6100
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.min(Math.floor(value), TIMELINE_MAX_DROPPED) : 0;
6101
+ }
6003
6102
  function fleetModelCostUsdToCents(costUsd) {
6004
6103
  if (typeof costUsd !== "number" || !Number.isFinite(costUsd) || costUsd < 0) return null;
6005
6104
  return Math.round(Number((costUsd * 100).toFixed(6)));
@@ -9181,20 +9280,17 @@ var SAFETY_PAUSE_WRITES_PER_MINUTE = 10;
9181
9280
  var SAFETY_CANCEL_WRITES_PER_MINUTE = 5;
9182
9281
  var UNCLASSIFIED_ACTION_POLICY = "warn";
9183
9282
  var SHIPPED_DEFAULT_RUNG_POLICY = "display";
9184
-
9185
- // src/ever-platform/stats.ts
9186
9283
  var EVER_STATS_V1_SCHEMA_ID = "ever.stats.v1";
9187
9284
  var EVER_STATS_REPORTS_PATH = "/v1/stats/reports";
9188
9285
  var EVER_PLATFORM_DEFAULT_API_URL = "https://api.ever.co";
9189
- var EVER_STATS_KEY_HEADER = "Ever-Stats-Key";
9190
- var EVER_STATS_SIGNATURE_HEADER = "Ever-Stats-Signature";
9191
- var EVER_STATS_KEY_ID_HEADER = "Ever-Stats-Key-Id";
9192
- var EVER_STATS_SIGNATURE_PREFIX = "ed25519=";
9193
- var EVER_STATS_MAX_BODY_BYTES = 16384;
9286
+ var EVER_STATS_KEY_HEADER = connectContracts.CONSTANTS.stats_headers.key;
9287
+ var EVER_STATS_SIGNATURE_HEADER = connectContracts.CONSTANTS.stats_headers.signature;
9288
+ var EVER_STATS_KEY_ID_HEADER = connectContracts.CONSTANTS.stats_headers.key_id;
9289
+ var EVER_STATS_SIGNATURE_PREFIX = connectContracts.CONSTANTS.stats_signature_prefix;
9290
+ var EVER_STATS_MAX_BODY_BYTES = connectContracts.CONSTANTS.stats.max_bytes;
9194
9291
  var EVER_STATS_V1_SOURCE = {
9195
- repository: "https://github.com/ever-co/ever-connect-sdk",
9196
- commit: "2fd74dad9357a18471292f38012a5f5e4e6d2938",
9197
- path: "contracts/schemas/ever.stats.v1.json",
9292
+ package: "@ever-co/connect-contracts",
9293
+ path: "schemas/ever.stats.v1.json",
9198
9294
  sha256: "0cd746f7dec75117a6b812b7a832f9ceca4c97a6ecf65d22d6967a6475efc6e5"
9199
9295
  };
9200
9296
  function isPrivateStatsHost(hostname) {
@@ -10101,6 +10197,7 @@ exports.FLEET_AGENT_EXECUTION_MODEL_PATTERN = FLEET_AGENT_EXECUTION_MODEL_PATTER
10101
10197
  exports.FLEET_AGENT_EXECUTION_MODES = FLEET_AGENT_EXECUTION_MODES;
10102
10198
  exports.FLEET_AGENT_EXECUTION_PERMISSION_MODES = FLEET_AGENT_EXECUTION_PERMISSION_MODES;
10103
10199
  exports.FLEET_AGENT_EXECUTION_PROVIDERS = FLEET_AGENT_EXECUTION_PROVIDERS;
10200
+ exports.FLEET_AGENT_MODEL_SESSION_ID_PATTERN = FLEET_AGENT_MODEL_SESSION_ID_PATTERN;
10104
10201
  exports.FLEET_AGENT_TASK_CONTAINMENT_MAX_CONTROL_CHARS = FLEET_AGENT_TASK_CONTAINMENT_MAX_CONTROL_CHARS;
10105
10202
  exports.FLEET_AGENT_TASK_CONTAINMENT_MAX_REASON_CHARS = FLEET_AGENT_TASK_CONTAINMENT_MAX_REASON_CHARS;
10106
10203
  exports.FLEET_AGENT_TASK_EXECUTION_PATHS = FLEET_AGENT_TASK_EXECUTION_PATHS;
@@ -10108,6 +10205,7 @@ exports.FLEET_AGENT_TASK_MAX_CONTAINMENT_DOWNGRADES = FLEET_AGENT_TASK_MAX_CONTA
10108
10205
  exports.FLEET_AGENT_TASK_MAX_SETUP_STEPS = FLEET_AGENT_TASK_MAX_SETUP_STEPS;
10109
10206
  exports.FLEET_AGENT_TASK_MAX_STEPS = FLEET_AGENT_TASK_MAX_STEPS;
10110
10207
  exports.FLEET_AGENT_TASK_META_DIR = FLEET_AGENT_TASK_META_DIR;
10208
+ exports.FLEET_AGENT_TASK_MODEL_RESUME_OUTCOMES = FLEET_AGENT_TASK_MODEL_RESUME_OUTCOMES;
10111
10209
  exports.FLEET_AGENT_TASK_QUESTION_FILE = FLEET_AGENT_TASK_QUESTION_FILE;
10112
10210
  exports.FLEET_AGENT_TASK_QUESTION_MAX_CONTEXT_BYTES = FLEET_AGENT_TASK_QUESTION_MAX_CONTEXT_BYTES;
10113
10211
  exports.FLEET_AGENT_TASK_QUESTION_MAX_FILE_BYTES = FLEET_AGENT_TASK_QUESTION_MAX_FILE_BYTES;
@@ -10115,6 +10213,12 @@ exports.FLEET_AGENT_TASK_QUESTION_MAX_TEXT_CHARS = FLEET_AGENT_TASK_QUESTION_MAX
10115
10213
  exports.FLEET_AGENT_TASK_SETUP_DEFAULT_TIMEOUT_SEC = FLEET_AGENT_TASK_SETUP_DEFAULT_TIMEOUT_SEC;
10116
10214
  exports.FLEET_AGENT_TASK_SETUP_LOG_TAIL_BYTES = FLEET_AGENT_TASK_SETUP_LOG_TAIL_BYTES;
10117
10215
  exports.FLEET_AGENT_TASK_SETUP_MAX_TIMEOUT_SEC = FLEET_AGENT_TASK_SETUP_MAX_TIMEOUT_SEC;
10216
+ exports.FLEET_AGENT_TASK_TIMELINE_ARGS_MAX_CHARS = FLEET_AGENT_TASK_TIMELINE_ARGS_MAX_CHARS;
10217
+ exports.FLEET_AGENT_TASK_TIMELINE_MAX_BYTES = FLEET_AGENT_TASK_TIMELINE_MAX_BYTES;
10218
+ exports.FLEET_AGENT_TASK_TIMELINE_MAX_STEPS = FLEET_AGENT_TASK_TIMELINE_MAX_STEPS;
10219
+ exports.FLEET_AGENT_TASK_TIMELINE_NAME_MAX_CHARS = FLEET_AGENT_TASK_TIMELINE_NAME_MAX_CHARS;
10220
+ exports.FLEET_AGENT_TASK_TIMELINE_TEXT_MAX_CHARS = FLEET_AGENT_TASK_TIMELINE_TEXT_MAX_CHARS;
10221
+ exports.FLEET_AGENT_TASK_TRANSCRIPT_MAX_BYTES = FLEET_AGENT_TASK_TRANSCRIPT_MAX_BYTES;
10118
10222
  exports.FLEET_ATTENDED_CAPABILITY = FLEET_ATTENDED_CAPABILITY;
10119
10223
  exports.FLEET_AUDIT_ACTIONS = FLEET_AUDIT_ACTIONS;
10120
10224
  exports.FLEET_AUDIT_DEFAULT_LIMIT = FLEET_AUDIT_DEFAULT_LIMIT;
@@ -10141,6 +10245,7 @@ exports.FLEET_JOB_CANCEL_STATES = FLEET_JOB_CANCEL_STATES;
10141
10245
  exports.FLEET_JOB_DEFAULT_LEASE_TTL_SEC = FLEET_JOB_DEFAULT_LEASE_TTL_SEC;
10142
10246
  exports.FLEET_JOB_DEFAULT_MAX_ATTEMPTS = FLEET_JOB_DEFAULT_MAX_ATTEMPTS;
10143
10247
  exports.FLEET_JOB_DEFAULT_QUEUED_MAX_AGE_SEC = FLEET_JOB_DEFAULT_QUEUED_MAX_AGE_SEC;
10248
+ exports.FLEET_JOB_DEFAULT_RETENTION_DAYS = FLEET_JOB_DEFAULT_RETENTION_DAYS;
10144
10249
  exports.FLEET_JOB_KINDS = FLEET_JOB_KINDS;
10145
10250
  exports.FLEET_JOB_LEASE_LAPSED_WHILE_SUSPENDED_REASON = FLEET_JOB_LEASE_LAPSED_WHILE_SUSPENDED_REASON;
10146
10251
  exports.FLEET_JOB_MAX_ATTEMPTS_CEILING = FLEET_JOB_MAX_ATTEMPTS_CEILING;
@@ -10151,8 +10256,10 @@ exports.FLEET_JOB_MAX_PAYLOAD_BYTES = FLEET_JOB_MAX_PAYLOAD_BYTES;
10151
10256
  exports.FLEET_JOB_MAX_QUEUED_MAX_AGE_SEC = FLEET_JOB_MAX_QUEUED_MAX_AGE_SEC;
10152
10257
  exports.FLEET_JOB_MAX_REQUIRED_CAPABILITIES = FLEET_JOB_MAX_REQUIRED_CAPABILITIES;
10153
10258
  exports.FLEET_JOB_MAX_RESULT_BYTES = FLEET_JOB_MAX_RESULT_BYTES;
10259
+ exports.FLEET_JOB_MAX_RETENTION_DAYS = FLEET_JOB_MAX_RETENTION_DAYS;
10154
10260
  exports.FLEET_JOB_MIN_LEASE_TTL_SEC = FLEET_JOB_MIN_LEASE_TTL_SEC;
10155
10261
  exports.FLEET_JOB_MIN_QUEUED_MAX_AGE_SEC = FLEET_JOB_MIN_QUEUED_MAX_AGE_SEC;
10262
+ exports.FLEET_JOB_MIN_RETENTION_DAYS = FLEET_JOB_MIN_RETENTION_DAYS;
10156
10263
  exports.FLEET_JOB_QUEUE_EXPIRED_REASON = FLEET_JOB_QUEUE_EXPIRED_REASON;
10157
10264
  exports.FLEET_JOB_STALE_LEASE_REASON = FLEET_JOB_STALE_LEASE_REASON;
10158
10265
  exports.FLEET_JOB_STATUSES = FLEET_JOB_STATUSES;
@@ -10714,6 +10821,7 @@ exports.findConversationDocumentReferences = findConversationDocumentReferences;
10714
10821
  exports.findTaskBoardColumn = findTaskBoardColumn;
10715
10822
  exports.firstRefusingRepositoryStage = firstRefusingRepositoryStage;
10716
10823
  exports.fleetAgentExecutionProviderSupportsMountGrants = fleetAgentExecutionProviderSupportsMountGrants;
10824
+ exports.fleetAgentExecutionProviderSupportsSessionResume = fleetAgentExecutionProviderSupportsSessionResume;
10717
10825
  exports.fleetModelCostUsdToCents = fleetModelCostUsdToCents;
10718
10826
  exports.fleetModelPluginId = fleetModelPluginId;
10719
10827
  exports.fleetPushCommitIdentity = fleetPushCommitIdentity;
@@ -10774,6 +10882,7 @@ exports.isFleetAgentExecutionEffort = isFleetAgentExecutionEffort;
10774
10882
  exports.isFleetAgentExecutionMode = isFleetAgentExecutionMode;
10775
10883
  exports.isFleetAgentExecutionPermissionMode = isFleetAgentExecutionPermissionMode;
10776
10884
  exports.isFleetAgentExecutionProvider = isFleetAgentExecutionProvider;
10885
+ exports.isFleetAgentModelSessionId = isFleetAgentModelSessionId;
10777
10886
  exports.isFleetEnrollableNodeKind = isFleetEnrollableNodeKind;
10778
10887
  exports.isFleetExecutionMode = isFleetExecutionMode;
10779
10888
  exports.isFleetJobActive = isFleetJobActive;
@@ -10868,8 +10977,10 @@ exports.normalizeEmailRecipient = normalizeEmailRecipient;
10868
10977
  exports.normalizeEmailSendCapValue = normalizeEmailSendCapValue;
10869
10978
  exports.normalizeEmailSendCapsOverride = normalizeEmailSendCapsOverride;
10870
10979
  exports.normalizeFleetAgentModelExecution = normalizeFleetAgentModelExecution;
10980
+ exports.normalizeFleetAgentModelResume = normalizeFleetAgentModelResume;
10871
10981
  exports.normalizeFleetAgentTaskContainment = normalizeFleetAgentTaskContainment;
10872
10982
  exports.normalizeFleetAgentTaskQuestion = normalizeFleetAgentTaskQuestion;
10983
+ exports.normalizeFleetAgentTaskTimeline = normalizeFleetAgentTaskTimeline;
10873
10984
  exports.normalizeFleetNodeWorkerState = normalizeFleetNodeWorkerState;
10874
10985
  exports.normalizeFleetPushRepositoryId = normalizeFleetPushRepositoryId;
10875
10986
  exports.normalizeFleetRunEnvFileRefs = normalizeFleetRunEnvFileRefs;