oasis_test 0.1.34 → 0.1.35
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.js +166 -66
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -24550,7 +24550,7 @@ async function startOasisServer(opts) {
|
|
|
24550
24550
|
const chatStore = opts.chatSession;
|
|
24551
24551
|
const ws = review.workspace ?? engine.kernel.model.artifacts.get(review.anchor)?.workspace ?? null;
|
|
24552
24552
|
let target = review.origin ?? discussSessions.get(`draft:${review.draftId}`) ?? void 0;
|
|
24553
|
-
let
|
|
24553
|
+
let record5 = target && chatStore ? await chatStore.getSession(target).catch(() => null) : null;
|
|
24554
24554
|
if (!target && chatStore && ws) {
|
|
24555
24555
|
const brief = [...engine.kernel.model.artifacts.values()].find((x2) => x2.type === "brief" && x2.workspace === ws);
|
|
24556
24556
|
if (brief) {
|
|
@@ -24559,7 +24559,7 @@ async function startOasisServer(opts) {
|
|
|
24559
24559
|
const wos = await chatStore.listWorkOrdersForSession(s2.id).catch(() => []);
|
|
24560
24560
|
if (wos.includes(ws)) {
|
|
24561
24561
|
target = s2.id;
|
|
24562
|
-
|
|
24562
|
+
record5 = s2;
|
|
24563
24563
|
break;
|
|
24564
24564
|
}
|
|
24565
24565
|
}
|
|
@@ -24570,7 +24570,7 @@ async function startOasisServer(opts) {
|
|
|
24570
24570
|
if (chatStore) {
|
|
24571
24571
|
await chatStore.appendMessage({ id: randomUUID18(), sessionId: target, role: "user", content: message, createdAt: (/* @__PURE__ */ new Date()).toISOString() }).catch(() => void 0);
|
|
24572
24572
|
}
|
|
24573
|
-
const rt =
|
|
24573
|
+
const rt = record5?.runtimeSessionId ?? opts.retainedSession?.({ draftId: review.draftId });
|
|
24574
24574
|
const session = await opts.dispatchChat({
|
|
24575
24575
|
actorId: review.proposedBy,
|
|
24576
24576
|
message,
|
|
@@ -25668,14 +25668,14 @@ var init_tokens = __esm({
|
|
|
25668
25668
|
};
|
|
25669
25669
|
isTokenClaims = (value) => {
|
|
25670
25670
|
if (value === null || typeof value !== "object") return false;
|
|
25671
|
-
const
|
|
25672
|
-
if (typeof
|
|
25673
|
-
if (typeof
|
|
25674
|
-
if (
|
|
25675
|
-
if (
|
|
25676
|
-
if (
|
|
25671
|
+
const record5 = value;
|
|
25672
|
+
if (typeof record5["actor"] !== "string" || !record5["actor"].startsWith("actor:")) return false;
|
|
25673
|
+
if (typeof record5["issuedAt"] !== "number" || !Number.isFinite(record5["issuedAt"])) return false;
|
|
25674
|
+
if (record5["expiresAt"] !== void 0 && (typeof record5["expiresAt"] !== "number" || !Number.isFinite(record5["expiresAt"]))) return false;
|
|
25675
|
+
if (record5["dispatchSeq"] !== void 0 && (typeof record5["dispatchSeq"] !== "number" || !Number.isFinite(record5["dispatchSeq"]))) return false;
|
|
25676
|
+
if (record5["scopes"] !== void 0 && (!Array.isArray(record5["scopes"]) || record5["scopes"].some((scope) => typeof scope !== "string"))) return false;
|
|
25677
25677
|
for (const key of ["sessionId", "artifactId", "action", "nodeId", "runtimeKind", "companyId", "chatSessionId"]) {
|
|
25678
|
-
if (
|
|
25678
|
+
if (record5[key] !== void 0 && typeof record5[key] !== "string") return false;
|
|
25679
25679
|
}
|
|
25680
25680
|
return true;
|
|
25681
25681
|
};
|
|
@@ -27877,9 +27877,9 @@ var init_service = __esm({
|
|
|
27877
27877
|
...input.revision.continuation ? { continuation: input.revision.continuation } : {}
|
|
27878
27878
|
});
|
|
27879
27879
|
await this.syncProjection();
|
|
27880
|
-
const
|
|
27881
|
-
if (!
|
|
27882
|
-
return
|
|
27880
|
+
const record5 = await this.artifacts.getRevision(kernelRevision.id);
|
|
27881
|
+
if (!record5) throw new Error(`revision projection missing after register: ${kernelRevision.id}`);
|
|
27882
|
+
return record5;
|
|
27883
27883
|
}
|
|
27884
27884
|
async approveArtifactRevision(input) {
|
|
27885
27885
|
if (input.actorKind !== "human") throw namedError("AgentReviewForbidden", "agents cannot approve artifact revisions");
|
|
@@ -27982,9 +27982,9 @@ var init_service = __esm({
|
|
|
27982
27982
|
...input.revisionId ? { revisionId: input.revisionId } : {}
|
|
27983
27983
|
});
|
|
27984
27984
|
await this.syncProjection();
|
|
27985
|
-
const
|
|
27986
|
-
if (!
|
|
27987
|
-
return
|
|
27985
|
+
const record5 = await this.artifacts.getAnnotation(kernelAnnotation.id);
|
|
27986
|
+
if (!record5) throw new Error(`annotation projection missing after create: ${kernelAnnotation.id}`);
|
|
27987
|
+
return record5;
|
|
27988
27988
|
}
|
|
27989
27989
|
async resolveArtifactAnnotation(input) {
|
|
27990
27990
|
const artifact = await this.artifacts.getArtifact(input.artifactId);
|
|
@@ -28000,9 +28000,9 @@ var init_service = __esm({
|
|
|
28000
28000
|
...input.comment?.trim() ? { note: input.comment.trim() } : {}
|
|
28001
28001
|
});
|
|
28002
28002
|
await this.syncProjection();
|
|
28003
|
-
const
|
|
28004
|
-
if (!
|
|
28005
|
-
return
|
|
28003
|
+
const record5 = await this.artifacts.getAnnotation(input.annotationId);
|
|
28004
|
+
if (!record5) throw new Error(`annotation projection missing after resolve: ${input.annotationId}`);
|
|
28005
|
+
return record5;
|
|
28006
28006
|
}
|
|
28007
28007
|
async registerNodeOutput(input) {
|
|
28008
28008
|
await this.assertProjectExecutable(input.projectId);
|
|
@@ -28679,10 +28679,10 @@ var init_dev_store = __esm({
|
|
|
28679
28679
|
async appendMessage(m2) {
|
|
28680
28680
|
const list = this.messages.get(m2.sessionId) ?? [];
|
|
28681
28681
|
const seq = (list.length ? Math.max(...list.map((x2) => x2.seq)) : 0) + 1;
|
|
28682
|
-
const
|
|
28683
|
-
list.push(
|
|
28682
|
+
const record5 = { ...m2, seq };
|
|
28683
|
+
list.push(record5);
|
|
28684
28684
|
this.messages.set(m2.sessionId, list);
|
|
28685
|
-
return
|
|
28685
|
+
return record5;
|
|
28686
28686
|
}
|
|
28687
28687
|
async listMessages(sessionId, limit) {
|
|
28688
28688
|
const list = (this.messages.get(sessionId) ?? []).sort((a, b2) => a.seq - b2.seq);
|
|
@@ -28728,9 +28728,9 @@ var init_dev_store = __esm({
|
|
|
28728
28728
|
this.save();
|
|
28729
28729
|
}
|
|
28730
28730
|
async appendMessage(m2) {
|
|
28731
|
-
const
|
|
28731
|
+
const record5 = await super.appendMessage(m2);
|
|
28732
28732
|
this.save();
|
|
28733
|
-
return
|
|
28733
|
+
return record5;
|
|
28734
28734
|
}
|
|
28735
28735
|
async linkWorkOrder(sessionId, workOrderId) {
|
|
28736
28736
|
await super.linkWorkOrder(sessionId, workOrderId);
|
|
@@ -33409,19 +33409,19 @@ var init_service2 = __esm({
|
|
|
33409
33409
|
async upsertActor(a, by) {
|
|
33410
33410
|
const existing = await this.opts.store.getActor(a.id);
|
|
33411
33411
|
const roles = a.roles ?? existing?.roles ?? [];
|
|
33412
|
-
const
|
|
33413
|
-
if (isActiveCoordinatorAgent(
|
|
33414
|
-
const existingCoordinator = (await this.opts.store.listActors({ kind: "agent", status: "active" })).find((actor) => actor.id !==
|
|
33412
|
+
const record5 = { ...a, roles, createdAt: existing?.createdAt ?? a.createdAt ?? this.now() };
|
|
33413
|
+
if (isActiveCoordinatorAgent(record5)) {
|
|
33414
|
+
const existingCoordinator = (await this.opts.store.listActors({ kind: "agent", status: "active" })).find((actor) => actor.id !== record5.id && isActiveCoordinatorAgent(actor));
|
|
33415
33415
|
if (existingCoordinator) {
|
|
33416
33416
|
throw new Error(
|
|
33417
|
-
`\u7CFB\u7EDF\u53EA\u80FD\u6709\u4E00\u4E2A\u534F\u8C03\u8005\u667A\u80FD\u4F53\uFF1A\u5DF2\u5B58\u5728 ${existingCoordinator.name}\uFF08${existingCoordinator.id}\uFF09\uFF0C\u4E0D\u80FD\u518D\u521B\u5EFA\u6216\u542F\u7528 ${
|
|
33417
|
+
`\u7CFB\u7EDF\u53EA\u80FD\u6709\u4E00\u4E2A\u534F\u8C03\u8005\u667A\u80FD\u4F53\uFF1A\u5DF2\u5B58\u5728 ${existingCoordinator.name}\uFF08${existingCoordinator.id}\uFF09\uFF0C\u4E0D\u80FD\u518D\u521B\u5EFA\u6216\u542F\u7528 ${record5.name}\uFF08${record5.id}\uFF09\u3002`
|
|
33418
33418
|
);
|
|
33419
33419
|
}
|
|
33420
33420
|
}
|
|
33421
|
-
await this.opts.store.upsertActor(
|
|
33422
|
-
this.opts.onRolesChanged?.(
|
|
33421
|
+
await this.opts.store.upsertActor(record5);
|
|
33422
|
+
this.opts.onRolesChanged?.(record5.id, record5.status === "active" ? roles : []);
|
|
33423
33423
|
await this.audit({ kind: "actor_upsert", actorId: a.id, by, at: this.now(), detail: { status: a.status, roles } });
|
|
33424
|
-
return
|
|
33424
|
+
return record5;
|
|
33425
33425
|
}
|
|
33426
33426
|
/** 删除即停用(2.1 完成标准) */
|
|
33427
33427
|
async disableActor(id, by) {
|
|
@@ -33437,10 +33437,10 @@ var init_service2 = __esm({
|
|
|
33437
33437
|
const a = await this.opts.store.getActor(id);
|
|
33438
33438
|
if (!a) throw new Error(`actor not found: ${id}`);
|
|
33439
33439
|
const { avatar: _drop, ...rest } = a;
|
|
33440
|
-
const
|
|
33441
|
-
await this.opts.store.upsertActor(
|
|
33440
|
+
const record5 = ref === null ? rest : { ...rest, avatar: ref };
|
|
33441
|
+
await this.opts.store.upsertActor(record5);
|
|
33442
33442
|
await this.audit({ kind: "actor_upsert", actorId: id, by, at: this.now(), detail: { avatar: ref ?? "cleared" } });
|
|
33443
|
-
return
|
|
33443
|
+
return record5;
|
|
33444
33444
|
}
|
|
33445
33445
|
/** 设置/清除团队图标引用(同头像约定;不接受 emoji,只接受 blob 引用) */
|
|
33446
33446
|
async setTeamIcon(teamId, ref) {
|
|
@@ -33853,13 +33853,13 @@ ${input.description}
|
|
|
33853
33853
|
this.opts.store.listConnectors()
|
|
33854
33854
|
]);
|
|
33855
33855
|
const globalConnected = new Set(connectors.filter((c) => c.status === "connected").map((c) => c.id));
|
|
33856
|
-
const
|
|
33856
|
+
const record5 = new Map(connections.map((c) => [c.connectorId, c.enabled]));
|
|
33857
33857
|
const legacy = new Set(config2?.connectorIds ?? []);
|
|
33858
|
-
const ids = /* @__PURE__ */ new Set([...
|
|
33858
|
+
const ids = /* @__PURE__ */ new Set([...record5.keys(), ...legacy, ...globalConnected]);
|
|
33859
33859
|
const effective = /* @__PURE__ */ new Set();
|
|
33860
33860
|
for (const id of ids) {
|
|
33861
|
-
if (
|
|
33862
|
-
if (
|
|
33861
|
+
if (record5.has(id)) {
|
|
33862
|
+
if (record5.get(id)) effective.add(id);
|
|
33863
33863
|
} else if (legacy.has(id)) effective.add(id);
|
|
33864
33864
|
else if (globalConnected.has(id)) effective.add(id);
|
|
33865
33865
|
}
|
|
@@ -38089,9 +38089,105 @@ var init_codex = __esm({
|
|
|
38089
38089
|
function newUsageAcc() {
|
|
38090
38090
|
return { inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheCreationTokens: 0 };
|
|
38091
38091
|
}
|
|
38092
|
+
function addToken(acc, value, field) {
|
|
38093
|
+
if (typeof value === "number" && Number.isFinite(value) && value > 0) {
|
|
38094
|
+
acc[field] += value;
|
|
38095
|
+
}
|
|
38096
|
+
}
|
|
38097
|
+
function record3(value) {
|
|
38098
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
38099
|
+
}
|
|
38100
|
+
function firstNumber(src, keys) {
|
|
38101
|
+
for (const key of keys) {
|
|
38102
|
+
const value = src[key];
|
|
38103
|
+
if (typeof value === "number" && Number.isFinite(value) && value > 0) return value;
|
|
38104
|
+
}
|
|
38105
|
+
return void 0;
|
|
38106
|
+
}
|
|
38107
|
+
function addFirstToken(acc, src, keys, field) {
|
|
38108
|
+
const before = acc[field];
|
|
38109
|
+
addToken(acc, firstNumber(src, keys), field);
|
|
38110
|
+
return acc[field] !== before;
|
|
38111
|
+
}
|
|
38112
|
+
function accumulateTokenFields(acc, src) {
|
|
38113
|
+
let changed = false;
|
|
38114
|
+
changed = addFirstToken(acc, src, [
|
|
38115
|
+
"input_tokens",
|
|
38116
|
+
"inputTokens",
|
|
38117
|
+
"prompt_tokens",
|
|
38118
|
+
"promptTokens",
|
|
38119
|
+
"promptTokenCount",
|
|
38120
|
+
"inputTokenCount",
|
|
38121
|
+
"input"
|
|
38122
|
+
], "inputTokens") || changed;
|
|
38123
|
+
changed = addFirstToken(acc, src, [
|
|
38124
|
+
"output_tokens",
|
|
38125
|
+
"outputTokens",
|
|
38126
|
+
"completion_tokens",
|
|
38127
|
+
"completionTokens",
|
|
38128
|
+
"completionTokenCount",
|
|
38129
|
+
"candidatesTokenCount",
|
|
38130
|
+
"response_tokens",
|
|
38131
|
+
"responseTokens",
|
|
38132
|
+
"generated_tokens",
|
|
38133
|
+
"generatedTokens",
|
|
38134
|
+
"outputTokenCount",
|
|
38135
|
+
"output"
|
|
38136
|
+
], "outputTokens") || changed;
|
|
38137
|
+
changed = addFirstToken(acc, src, [
|
|
38138
|
+
"cached_read_tokens",
|
|
38139
|
+
"cachedReadTokens",
|
|
38140
|
+
"cacheReadTokens",
|
|
38141
|
+
"cache_read_input_tokens",
|
|
38142
|
+
"cacheReadInputTokens",
|
|
38143
|
+
"cached_input_tokens",
|
|
38144
|
+
"cachedInputTokens",
|
|
38145
|
+
"cached_tokens",
|
|
38146
|
+
"cachedTokens",
|
|
38147
|
+
"cachedContentTokenCount"
|
|
38148
|
+
], "cacheReadTokens") || changed;
|
|
38149
|
+
changed = addFirstToken(acc, src, [
|
|
38150
|
+
"cache_creation_input_tokens",
|
|
38151
|
+
"cacheCreationTokens",
|
|
38152
|
+
"cacheCreationInputTokens",
|
|
38153
|
+
"cache_creation_tokens",
|
|
38154
|
+
"cache_write_input_tokens",
|
|
38155
|
+
"cacheWriteInputTokens",
|
|
38156
|
+
"cache_write_tokens",
|
|
38157
|
+
"cacheWriteTokens"
|
|
38158
|
+
], "cacheCreationTokens") || changed;
|
|
38159
|
+
const promptDetails = record3(src["prompt_tokens_details"]) ?? record3(src["promptTokensDetails"]);
|
|
38160
|
+
if (promptDetails) {
|
|
38161
|
+
changed = addFirstToken(acc, promptDetails, ["cached_tokens", "cachedTokens"], "cacheReadTokens") || changed;
|
|
38162
|
+
}
|
|
38163
|
+
return changed;
|
|
38164
|
+
}
|
|
38165
|
+
function accumulateUsage(acc, value) {
|
|
38166
|
+
const root = record3(value);
|
|
38167
|
+
if (!root) return false;
|
|
38168
|
+
const candidates = [
|
|
38169
|
+
root,
|
|
38170
|
+
record3(root["usage"]),
|
|
38171
|
+
record3(root["token_usage"]),
|
|
38172
|
+
record3(root["tokenUsage"]),
|
|
38173
|
+
record3(root["tokens"]),
|
|
38174
|
+
record3(root["usageMetadata"]),
|
|
38175
|
+
record3(root["usage_metadata"])
|
|
38176
|
+
];
|
|
38177
|
+
const seen = /* @__PURE__ */ new Set();
|
|
38178
|
+
let changed = false;
|
|
38179
|
+
for (const candidate of candidates) {
|
|
38180
|
+
if (!candidate || seen.has(candidate)) continue;
|
|
38181
|
+
seen.add(candidate);
|
|
38182
|
+
changed = accumulateTokenFields(acc, candidate) || changed;
|
|
38183
|
+
}
|
|
38184
|
+
return changed;
|
|
38185
|
+
}
|
|
38186
|
+
function hasUsage(acc) {
|
|
38187
|
+
return acc.inputTokens > 0 || acc.outputTokens > 0 || acc.cacheReadTokens > 0 || acc.cacheCreationTokens > 0;
|
|
38188
|
+
}
|
|
38092
38189
|
function buildUsage(acc, costUsdMicros) {
|
|
38093
|
-
|
|
38094
|
-
if (!hasTokens && costUsdMicros == null) return void 0;
|
|
38190
|
+
if (!hasUsage(acc) && costUsdMicros == null) return void 0;
|
|
38095
38191
|
return {
|
|
38096
38192
|
inputTokens: acc.inputTokens || null,
|
|
38097
38193
|
outputTokens: acc.outputTokens || null,
|
|
@@ -38262,7 +38358,7 @@ var init_pricing = __esm({
|
|
|
38262
38358
|
});
|
|
38263
38359
|
|
|
38264
38360
|
// ../adapters/src/_core/acp.ts
|
|
38265
|
-
function
|
|
38361
|
+
function record4(value) {
|
|
38266
38362
|
return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
38267
38363
|
}
|
|
38268
38364
|
function firstString(...values) {
|
|
@@ -38277,11 +38373,11 @@ function textFromUnknown(value) {
|
|
|
38277
38373
|
const parts = value.map(textFromUnknown).filter((x2) => Boolean(x2));
|
|
38278
38374
|
return parts.length ? parts.join("") : void 0;
|
|
38279
38375
|
}
|
|
38280
|
-
const obj =
|
|
38376
|
+
const obj = record4(value);
|
|
38281
38377
|
if (!obj) return void 0;
|
|
38282
|
-
const direct = firstString(obj["text"], obj["delta"], obj["message"],
|
|
38378
|
+
const direct = firstString(obj["text"], obj["delta"], obj["message"], record4(obj["error"])?.["message"]);
|
|
38283
38379
|
if (direct) return direct;
|
|
38284
|
-
return textFromUnknown(obj["content"]) ?? textFromUnknown(
|
|
38380
|
+
return textFromUnknown(obj["content"]) ?? textFromUnknown(record4(obj["result"])?.["content"]) ?? textFromUnknown(obj["result"]);
|
|
38285
38381
|
}
|
|
38286
38382
|
function jsonLike(value) {
|
|
38287
38383
|
if (typeof value !== "string") return value;
|
|
@@ -38296,15 +38392,15 @@ function jsonLike(value) {
|
|
|
38296
38392
|
return { text: value };
|
|
38297
38393
|
}
|
|
38298
38394
|
function toolPayload(data) {
|
|
38299
|
-
const d =
|
|
38300
|
-
const nested =
|
|
38395
|
+
const d = record4(data) ?? {};
|
|
38396
|
+
const nested = record4(d["toolCall"]) ?? record4(d["tool_call"]) ?? record4(d["call"]) ?? record4(d["tool"]) ?? record4(d["data"]) ?? {};
|
|
38301
38397
|
return { ...nested, ...d };
|
|
38302
38398
|
}
|
|
38303
38399
|
function toolCallIdOf(d) {
|
|
38304
38400
|
return firstString(d["toolCallId"], d["tool_call_id"], d["callId"], d["call_id"], d["id"]);
|
|
38305
38401
|
}
|
|
38306
38402
|
function toolNameOf(d) {
|
|
38307
|
-
return firstString(d["name"], d["toolName"], d["tool_name"],
|
|
38403
|
+
return firstString(d["name"], d["toolName"], d["tool_name"], record4(d["tool"])?.["name"]) ?? toolNameFromTitle(firstString(d["title"]) ?? "", firstString(d["kind"]) ?? "");
|
|
38308
38404
|
}
|
|
38309
38405
|
function inputFromTitle(title, toolName) {
|
|
38310
38406
|
const colon = title.indexOf(":");
|
|
@@ -38346,7 +38442,7 @@ function argsTextOf(d) {
|
|
|
38346
38442
|
return typeof value === "string" ? value : void 0;
|
|
38347
38443
|
}
|
|
38348
38444
|
function toolOutputOf(d) {
|
|
38349
|
-
const error2 =
|
|
38445
|
+
const error2 = record4(d["error"]);
|
|
38350
38446
|
if (error2) return error2["message"] ?? error2;
|
|
38351
38447
|
const raw = d["rawOutput"] ?? d["raw_output"] ?? d["output"] ?? d["result"] ?? d["results"] ?? d["response"] ?? d["data"] ?? d["content"];
|
|
38352
38448
|
const stream = compactRecord({
|
|
@@ -38384,7 +38480,7 @@ function parseJsonString(value) {
|
|
|
38384
38480
|
function locationsOf(d) {
|
|
38385
38481
|
const locations = d["locations"];
|
|
38386
38482
|
if (!Array.isArray(locations)) return void 0;
|
|
38387
|
-
const out = locations.filter((item) => Boolean(
|
|
38483
|
+
const out = locations.filter((item) => Boolean(record4(item)));
|
|
38388
38484
|
return out.length ? out : void 0;
|
|
38389
38485
|
}
|
|
38390
38486
|
function statusOf(d) {
|
|
@@ -38435,6 +38531,8 @@ function normalizeUpdateType(t) {
|
|
|
38435
38531
|
toolcallfinished: "tool_call_update",
|
|
38436
38532
|
toolcallcompleted: "tool_call_update",
|
|
38437
38533
|
usageupdate: "usage_update",
|
|
38534
|
+
usage: "usage_update",
|
|
38535
|
+
tokenusage: "usage_update",
|
|
38438
38536
|
turnend: "turn_end",
|
|
38439
38537
|
endturn: "turn_end"
|
|
38440
38538
|
}[key] ?? "";
|
|
@@ -38733,7 +38831,10 @@ var init_acp = __esm({
|
|
|
38733
38831
|
const msg = detail ? `${p2.method}: ${err.message} (code=${err.code}, data=${detail})` : `${p2.method}: ${err.message} (code=${err.code})`;
|
|
38734
38832
|
p2.reject(Object.assign(new Error(msg), { code: err.code, data: detail }));
|
|
38735
38833
|
} else {
|
|
38736
|
-
if (p2.method === "session/prompt")
|
|
38834
|
+
if (p2.method === "session/prompt") {
|
|
38835
|
+
this.extractStopReason(raw["result"]);
|
|
38836
|
+
this.handleUsageFallback(raw["result"]);
|
|
38837
|
+
}
|
|
38737
38838
|
p2.resolve(raw["result"]);
|
|
38738
38839
|
}
|
|
38739
38840
|
}
|
|
@@ -38772,18 +38873,15 @@ var init_acp = __esm({
|
|
|
38772
38873
|
case "turn_end":
|
|
38773
38874
|
this.flushTextBuffers();
|
|
38774
38875
|
this.extractStopReason(updateData);
|
|
38876
|
+
this.handleUsageFallback(updateData);
|
|
38775
38877
|
break;
|
|
38776
38878
|
}
|
|
38777
38879
|
}
|
|
38778
38880
|
handleUsageUpdate(data) {
|
|
38779
|
-
|
|
38780
|
-
|
|
38781
|
-
|
|
38782
|
-
|
|
38783
|
-
this.usage.inputTokens += n(usage["inputTokens"] ?? usage["input_tokens"]);
|
|
38784
|
-
this.usage.outputTokens += n(usage["outputTokens"] ?? usage["output_tokens"]);
|
|
38785
|
-
this.usage.cacheReadTokens += n(usage["cachedReadTokens"] ?? usage["cached_read_tokens"] ?? usage["cacheReadTokens"]);
|
|
38786
|
-
this.usage.cacheCreationTokens += n(usage["cacheCreationTokens"] ?? usage["cache_creation_input_tokens"]);
|
|
38881
|
+
accumulateUsage(this.usage, data);
|
|
38882
|
+
}
|
|
38883
|
+
handleUsageFallback(data) {
|
|
38884
|
+
if (!hasUsage(this.usage)) this.handleUsageUpdate(data);
|
|
38787
38885
|
}
|
|
38788
38886
|
extractStopReason(data) {
|
|
38789
38887
|
this.flushTextBuffers();
|
|
@@ -38815,11 +38913,11 @@ var init_acp = __esm({
|
|
|
38815
38913
|
this.flushTextBuffer("message");
|
|
38816
38914
|
}
|
|
38817
38915
|
handleAgentMessage(data) {
|
|
38818
|
-
const text = textFromUnknown(
|
|
38916
|
+
const text = textFromUnknown(record4(data)?.["content"] ?? data);
|
|
38819
38917
|
if (text) this.appendText("message", text);
|
|
38820
38918
|
}
|
|
38821
38919
|
handleAgentThought(data) {
|
|
38822
|
-
const text = textFromUnknown(
|
|
38920
|
+
const text = textFromUnknown(record4(data)?.["content"] ?? data);
|
|
38823
38921
|
if (text) this.appendText("thought", text);
|
|
38824
38922
|
}
|
|
38825
38923
|
handleToolCallStart(data) {
|
|
@@ -54396,10 +54494,10 @@ async function startServe(opts) {
|
|
|
54396
54494
|
let nodeStore = await FileNodeStore.open(path16.join(opts.dir, "nodes.json"));
|
|
54397
54495
|
const registryAuditFile = path16.join(opts.dir, "registry-audit.ndjson");
|
|
54398
54496
|
const registryListeners = /* @__PURE__ */ new Set();
|
|
54399
|
-
const registryAudit = (
|
|
54400
|
-
fs17.appendFile(registryAuditFile, JSON.stringify(
|
|
54497
|
+
const registryAudit = (record5) => {
|
|
54498
|
+
fs17.appendFile(registryAuditFile, JSON.stringify(record5) + "\n", () => {
|
|
54401
54499
|
});
|
|
54402
|
-
for (const l of registryListeners) l({ kind:
|
|
54500
|
+
for (const l of registryListeners) l({ kind: record5.kind, actor: record5.actor, target: record5.target, timestamp: record5.timestamp });
|
|
54403
54501
|
};
|
|
54404
54502
|
await syncRegistryRolesToKernel(registryStore, kernel);
|
|
54405
54503
|
let builtinSkills = [];
|
|
@@ -57632,13 +57730,14 @@ ${res.warning}`);
|
|
|
57632
57730
|
}
|
|
57633
57731
|
|
|
57634
57732
|
// src/index.ts
|
|
57635
|
-
var PKG_VERSION = true ? "0.1.
|
|
57733
|
+
var PKG_VERSION = true ? "0.1.35" : "dev";
|
|
57636
57734
|
var OASIS_DIR = path18.join(os10.homedir(), ".oasis");
|
|
57637
57735
|
var CONFIG_FILE = path18.join(OASIS_DIR, "node-config.json");
|
|
57638
57736
|
var PID_FILE = path18.join(OASIS_DIR, "node.pid");
|
|
57639
57737
|
var BIN_FILE = path18.join(OASIS_DIR, "bin", "oasis.js");
|
|
57640
57738
|
var LOCAL_BIN = path18.join(os10.homedir(), ".local", "bin", "oasis");
|
|
57641
57739
|
var LOG_FILE = path18.join(OASIS_DIR, "node.log");
|
|
57740
|
+
var NPM_PREFIX = path18.join(OASIS_DIR, "npm-global");
|
|
57642
57741
|
var PKG_NAME = "oasis_test";
|
|
57643
57742
|
var parseFlags = (argv) => {
|
|
57644
57743
|
const flags = /* @__PURE__ */ new Map();
|
|
@@ -57772,8 +57871,9 @@ function selfUpdate() {
|
|
|
57772
57871
|
const cfg = readConfig();
|
|
57773
57872
|
if (!cfg?.serverUrl) throw new Error("no config \u2014 run `oasis start` first");
|
|
57774
57873
|
const nameArg = cfg.name ? ` --name '${cfg.name.replace(/'/g, "'\\''")}'` : "";
|
|
57775
|
-
const
|
|
57776
|
-
const
|
|
57874
|
+
const oasisBin = path18.join(NPM_PREFIX, "bin", "oasis");
|
|
57875
|
+
const startCmd = `"${oasisBin}" start --server-ws '${cfg.serverUrl}'${nameArg}`;
|
|
57876
|
+
const inner = `{ echo "[oasis] self-update \u2192 npm install --prefix ${NPM_PREFIX} ${PKG_NAME}@latest"; sleep 2; npm install -g --prefer-online --prefix '${NPM_PREFIX}' '${PKG_NAME}@latest' && ${startCmd}; } >> '${LOG_FILE}' 2>&1`;
|
|
57777
57877
|
const hasSystemd = process.platform === "linux" && (() => {
|
|
57778
57878
|
try {
|
|
57779
57879
|
(0, import_node_child_process15.execSync)("command -v systemd-run", { stdio: "ignore" });
|