grix-connector 4.9.6 → 4.10.0
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/adapter/acp/acp-adapter.js +13 -14
- package/dist/adapter/acp/mcode-provider-config.js +2 -0
- package/dist/adapter/acp/session-activity.js +1 -1
- package/dist/adapter/acp/session-scanner.js +3 -3
- package/dist/adapter/claude/claude-bridge-server.js +1 -1
- package/dist/adapter/claude/claude-tools.js +1 -1
- package/dist/adapter/claude/claude-worker-client.js +1 -1
- package/dist/adapter/claude/mcp-http-launcher.js +2 -2
- package/dist/adapter/claude/result-timeout.js +1 -1
- package/dist/adapter/claude/skill-scanner.js +2 -2
- package/dist/adapter/opencode/opencode-adapter.js +5 -5
- package/dist/adapter/opencode/session-history.js +2 -2
- package/dist/adapter/opencode/session-scanner.js +3 -3
- package/dist/adapter/pi/omp-mcp-config.js +3 -0
- package/dist/adapter/pi/pi-adapter.js +6 -6
- package/dist/adapter/pi/pi-provider-config.js +3 -3
- package/dist/adapter/pi/session-history.js +2 -2
- package/dist/adapter/shared/identity-injector.js +2 -2
- package/dist/adapter/shared/native-provider-config.js +7 -5
- package/dist/adapter/shared/serialize-on-file.js +1 -0
- package/dist/assets/dsh-bridge/grix-dsh-bridge-4.10.0.tgz +0 -0
- package/dist/assets/dsh-bridge/manifest.json +6 -6
- package/dist/audit/adapters/acp/generic-acp-audit-adapter.js +2 -2
- package/dist/audit/adapters/opencode/opencode-audit-adapter.js +1 -1
- package/dist/bridge/bridge.js +2 -2
- package/dist/bridge/native-provider-sweep.js +1 -1
- package/dist/bridge/provider-quota.js +1 -1
- package/dist/bridge/session-identity.js +1 -1
- package/dist/bridge/session-list.js +3 -3
- package/dist/bridge/session-scan-cache.js +1 -1
- package/dist/bridge/session-usage.js +1 -1
- package/dist/core/access/allowlist-store.js +1 -1
- package/dist/core/config/provider-env.js +1 -1
- package/dist/core/file-ops/list-files.js +1 -1
- package/dist/core/installer/preflight.js +4 -4
- package/dist/core/installer/prereq-installer.js +3 -3
- package/dist/core/installer/registry.js +1 -1
- package/dist/core/persistence/session-binding-store.js +2 -2
- package/dist/core/probe/installed-clients.js +1 -1
- package/dist/core/provider-quota/providers.js +2 -2
- package/dist/core/skill-sync/enable-roots.js +1 -1
- package/dist/default-skills/index.js +1 -1
- package/dist/log.js +2 -2
- package/dist/manager.js +1 -1
- package/dist/mcp/stream-http/config.js +1 -1
- package/dist/mcp/stream-http/connection-binding.js +1 -1
- package/dist/mcp/stream-http/tool-executor.js +1 -1
- package/dist/mcp/stream-http/tool-registry.js +1 -1
- package/dist/mcp/stream-http/tool-schemas.js +1 -1
- package/dist/protocol/acp-client.js +1 -1
- package/dist/types/events.js +1 -1
- package/openclaw-plugin/audit-recorder-worker.js +110 -5
- package/package.json +1 -1
- package/dist/assets/dsh-bridge/grix-dsh-bridge-4.9.6.tgz +0 -0
|
@@ -4853,11 +4853,48 @@ var GenericAcpAuditAdapter = class {
|
|
|
4853
4853
|
}
|
|
4854
4854
|
const toolUses = /* @__PURE__ */ new Map();
|
|
4855
4855
|
const toolResults = /* @__PURE__ */ new Map();
|
|
4856
|
+
const permissionRequests = /* @__PURE__ */ new Map();
|
|
4857
|
+
const permissionResponses = /* @__PURE__ */ new Map();
|
|
4856
4858
|
for (const item of collection.events) {
|
|
4857
4859
|
const callId = stringValue4(item.event.toolCallId);
|
|
4858
|
-
if (
|
|
4859
|
-
|
|
4860
|
-
|
|
4860
|
+
if (callId) {
|
|
4861
|
+
if (item.event.type === "tool_use") toolUses.set(callId, item);
|
|
4862
|
+
if (item.event.type === "tool_result") toolResults.set(callId, item);
|
|
4863
|
+
}
|
|
4864
|
+
const requestId2 = stringValue4(item.event.requestId);
|
|
4865
|
+
if (requestId2) {
|
|
4866
|
+
if (item.event.type === "permission_request") permissionRequests.set(requestId2, item);
|
|
4867
|
+
if (item.event.type === "permission_response") permissionResponses.set(requestId2, item);
|
|
4868
|
+
}
|
|
4869
|
+
}
|
|
4870
|
+
if (capture.tools) {
|
|
4871
|
+
for (const [requestId2, request] of permissionRequests) {
|
|
4872
|
+
const response = permissionResponses.get(requestId2);
|
|
4873
|
+
const pr = isRecord6(request.event.permissionRequest) ? request.event.permissionRequest : void 0;
|
|
4874
|
+
const toolCallId = stringValue4(pr?.toolCallId) ?? stringValue4(request.event.toolCallId);
|
|
4875
|
+
const parent = [...requests].reverse().find((req) => Date.parse(req.startedAt) <= Date.parse(request.observedAt)) ?? requests[0];
|
|
4876
|
+
const permission = makeSpan3({
|
|
4877
|
+
job,
|
|
4878
|
+
spanId: `acp:${job.sessionId}:permission:${requestId2}`,
|
|
4879
|
+
parentSpanId: parent?.spanId ?? turnSpanId,
|
|
4880
|
+
kind: "permission",
|
|
4881
|
+
name: stringValue4(pr?.toolName) ?? stringValue4(request.event.toolName) ?? "permission_request",
|
|
4882
|
+
sequence: sequence++,
|
|
4883
|
+
status: !response ? "running" : response.event.permissionDecision === "dropped" ? "failed" : "completed",
|
|
4884
|
+
startedAt: request.observedAt,
|
|
4885
|
+
endedAt: response?.observedAt ?? job.endedAt,
|
|
4886
|
+
nativeEventType: "permission_request",
|
|
4887
|
+
nativeIds: { requestId: requestId2, toolCallId },
|
|
4888
|
+
rawAttributes: {
|
|
4889
|
+
permissionRequestEvent: request.event,
|
|
4890
|
+
...response ? {
|
|
4891
|
+
permissionResponseEvent: response.event,
|
|
4892
|
+
decision: stringValue4(response.event.permissionDecision)
|
|
4893
|
+
} : {}
|
|
4894
|
+
}
|
|
4895
|
+
});
|
|
4896
|
+
spans.push(permission);
|
|
4897
|
+
}
|
|
4861
4898
|
}
|
|
4862
4899
|
if (capture.tools) {
|
|
4863
4900
|
for (const [callId, use] of toolUses) {
|
|
@@ -4941,9 +4978,10 @@ var GenericAcpAuditAdapter = class {
|
|
|
4941
4978
|
const evidence = normalized;
|
|
4942
4979
|
const requests = evidence.spans.filter((span2) => span2.kind === "llm_request");
|
|
4943
4980
|
const tools = evidence.spans.filter((span2) => span2.kind === "tool_call");
|
|
4981
|
+
const permissions = evidence.spans.filter((span2) => span2.kind === "permission");
|
|
4944
4982
|
const inputComplete = !evidence.capture.inputOutput || job.input !== void 0;
|
|
4945
4983
|
const outputComplete = !evidence.capture.inputOutput || job.finalOutput !== void 0 || requests.some((request) => request.outputRefs.length > 0);
|
|
4946
|
-
const toolCallsComplete = !evidence.capture.tools || tools.every((tool) => tool.status !== "running");
|
|
4984
|
+
const toolCallsComplete = !evidence.capture.tools || tools.every((tool) => tool.status !== "running") && permissions.every((permission) => permission.status !== "running");
|
|
4947
4985
|
const usageComplete = requests.length > 0 && requests.every((request) => request.usage?.completeness === "complete");
|
|
4948
4986
|
const gaps = [...evidence.collection.gaps];
|
|
4949
4987
|
if (evidence.capture.rawProviderBody) {
|
|
@@ -7757,6 +7795,72 @@ var OpenCodeAuditAdapter = class {
|
|
|
7757
7795
|
}
|
|
7758
7796
|
spans.push(tool);
|
|
7759
7797
|
}
|
|
7798
|
+
const permissionAsks = /* @__PURE__ */ new Map();
|
|
7799
|
+
const permissionReplies = /* @__PURE__ */ new Map();
|
|
7800
|
+
const legacyPermissions = [];
|
|
7801
|
+
let maxSequence = -1;
|
|
7802
|
+
for (const item of collection.events) {
|
|
7803
|
+
if (item.sequence > maxSequence) maxSequence = item.sequence;
|
|
7804
|
+
if (item.event.type === "permission.asked" && stringValue9(item.event.id)) {
|
|
7805
|
+
permissionAsks.set(item.event.id, item);
|
|
7806
|
+
} else if (item.event.type === "permission.replied" && stringValue9(item.event.requestID)) {
|
|
7807
|
+
permissionReplies.set(item.event.requestID, item);
|
|
7808
|
+
} else if (item.event.type === "permission.updated" && isRecord12(item.event.permission)) {
|
|
7809
|
+
legacyPermissions.push(item);
|
|
7810
|
+
}
|
|
7811
|
+
}
|
|
7812
|
+
for (const [requestId2, ask] of permissionAsks) {
|
|
7813
|
+
const reply = permissionReplies.get(requestId2);
|
|
7814
|
+
const tool = isRecord12(ask.event.tool) ? ask.event.tool : void 0;
|
|
7815
|
+
const messageId = stringValue9(tool?.messageID);
|
|
7816
|
+
const permission = makeSpan7({
|
|
7817
|
+
job,
|
|
7818
|
+
spanId: `opencode:${job.sessionId}:permission:${requestId2}`,
|
|
7819
|
+
parentSpanId: (messageId ? requestByMessage.get(messageId)?.spanId : void 0) ?? turnSpanId,
|
|
7820
|
+
kind: "permission",
|
|
7821
|
+
name: stringValue9(ask.event.permission) ?? "permission_request",
|
|
7822
|
+
sequence: sequence++,
|
|
7823
|
+
status: reply ? stringValue9(reply.event.reply) === "reject" ? "failed" : "completed" : "running",
|
|
7824
|
+
startedAt: ask.observedAt,
|
|
7825
|
+
endedAt: reply?.observedAt ?? ask.observedAt,
|
|
7826
|
+
nativeEventType: "permission.asked",
|
|
7827
|
+
nativeIds: {
|
|
7828
|
+
requestId: requestId2,
|
|
7829
|
+
messageId,
|
|
7830
|
+
toolCallId: stringValue9(tool?.callID)
|
|
7831
|
+
},
|
|
7832
|
+
rawAttributes: {
|
|
7833
|
+
permissionRequest: ask.event,
|
|
7834
|
+
...reply ? { permissionReply: reply.event } : {}
|
|
7835
|
+
}
|
|
7836
|
+
});
|
|
7837
|
+
spans.push(permission);
|
|
7838
|
+
}
|
|
7839
|
+
for (const item of legacyPermissions) {
|
|
7840
|
+
const permissionInfo = item.event.permission;
|
|
7841
|
+
const messageId = stringValue9(permissionInfo.messageID);
|
|
7842
|
+
const permissionId = stringValue9(permissionInfo.id) ?? `legacy:${item.sequence}`;
|
|
7843
|
+
const hasFollowingEvent = item.sequence < maxSequence;
|
|
7844
|
+
const permission = makeSpan7({
|
|
7845
|
+
job,
|
|
7846
|
+
spanId: `opencode:${job.sessionId}:permission:${permissionId}`,
|
|
7847
|
+
parentSpanId: (messageId ? requestByMessage.get(messageId)?.spanId : void 0) ?? turnSpanId,
|
|
7848
|
+
kind: "permission",
|
|
7849
|
+
name: stringValue9(permissionInfo.type) ?? stringValue9(permissionInfo.title) ?? "permission_request",
|
|
7850
|
+
sequence: sequence++,
|
|
7851
|
+
status: hasFollowingEvent ? "completed" : "running",
|
|
7852
|
+
startedAt: item.observedAt,
|
|
7853
|
+
endedAt: item.observedAt,
|
|
7854
|
+
nativeEventType: "permission.updated",
|
|
7855
|
+
nativeIds: {
|
|
7856
|
+
requestId: permissionId,
|
|
7857
|
+
messageId,
|
|
7858
|
+
toolCallId: stringValue9(permissionInfo.callID)
|
|
7859
|
+
},
|
|
7860
|
+
rawAttributes: { permission: permissionInfo }
|
|
7861
|
+
});
|
|
7862
|
+
spans.push(permission);
|
|
7863
|
+
}
|
|
7760
7864
|
}
|
|
7761
7865
|
return {
|
|
7762
7866
|
spans,
|
|
@@ -7775,9 +7879,10 @@ var OpenCodeAuditAdapter = class {
|
|
|
7775
7879
|
(item) => item.kind === "llm_request"
|
|
7776
7880
|
);
|
|
7777
7881
|
const tools = evidence.spans.filter((item) => item.kind === "tool_call");
|
|
7882
|
+
const permissions = evidence.spans.filter((item) => item.kind === "permission");
|
|
7778
7883
|
const inputComplete = !evidence.capture.inputOutput || job.input !== void 0;
|
|
7779
7884
|
const outputComplete = !evidence.capture.inputOutput || job.finalOutput !== void 0 || requests.some((request) => request.outputRefs.length > 0);
|
|
7780
|
-
const toolCallsComplete = !evidence.capture.tools || tools.every((tool) => tool.status !== "running");
|
|
7885
|
+
const toolCallsComplete = !evidence.capture.tools || tools.every((tool) => tool.status !== "running") && permissions.every((permission) => permission.status !== "running");
|
|
7781
7886
|
const usageComplete = requests.length > 0 && requests.every((request) => request.usage?.completeness === "complete");
|
|
7782
7887
|
const gaps = [...evidence.collection.gaps];
|
|
7783
7888
|
if (evidence.capture.rawProviderBody) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grix-connector",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.10.0",
|
|
4
4
|
"description": "Connect local AI coding agents (Claude, Codex, Gemini, Qwen, DeepSeek, Cursor, OpenCode, Pi, OpenHuman, Reasonix) to the Grix scheduling platform. Also serves as an OpenClaw plugin for Grix channel transport.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
Binary file
|