@integrity-labs/xero-broker 0.1.2 → 0.1.3
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 +32 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -20987,10 +20987,41 @@ var StdioServerTransport = class {
|
|
|
20987
20987
|
|
|
20988
20988
|
// src/turn-initiator-marker.ts
|
|
20989
20989
|
import { readFileSync } from "fs";
|
|
20990
|
+
import { dirname, join } from "path";
|
|
20990
20991
|
var TURN_INITIATOR_MAX_AGE_MS = 5 * 60 * 1e3;
|
|
20992
|
+
var TURN_INITIATOR_LEDGER_FILENAME = ".turn-initiator-ledger.json";
|
|
20993
|
+
function readTurnInitiatorFromLedger(file, maxAgeMs) {
|
|
20994
|
+
const ledgerFile = join(dirname(file), TURN_INITIATOR_LEDGER_FILENAME);
|
|
20995
|
+
let entries;
|
|
20996
|
+
try {
|
|
20997
|
+
const parsed = JSON.parse(readFileSync(ledgerFile, "utf8"));
|
|
20998
|
+
if (!parsed || parsed.v !== 1 || !Array.isArray(parsed.entries)) return "no-ledger";
|
|
20999
|
+
entries = parsed.entries;
|
|
21000
|
+
} catch {
|
|
21001
|
+
return "no-ledger";
|
|
21002
|
+
}
|
|
21003
|
+
const now = Date.now();
|
|
21004
|
+
const fresh = entries.filter(
|
|
21005
|
+
(e) => e && typeof e.channel === "string" && e.channel && typeof e.sender_id === "string" && e.sender_id && typeof e.ts === "number" && Number.isFinite(e.ts) && now - e.ts >= 0 && now - e.ts <= maxAgeMs
|
|
21006
|
+
);
|
|
21007
|
+
if (fresh.length === 1) {
|
|
21008
|
+
const e = fresh[0];
|
|
21009
|
+
return { channel: e.channel, sender_id: e.sender_id };
|
|
21010
|
+
}
|
|
21011
|
+
if (fresh.length >= 2) {
|
|
21012
|
+
process.stderr.write(
|
|
21013
|
+
`turn-initiator: ambiguous (${fresh.length} fresh senders), withholding initiator
|
|
21014
|
+
`
|
|
21015
|
+
);
|
|
21016
|
+
return null;
|
|
21017
|
+
}
|
|
21018
|
+
return "no-ledger";
|
|
21019
|
+
}
|
|
20991
21020
|
function readTurnInitiator(maxAgeMs = TURN_INITIATOR_MAX_AGE_MS) {
|
|
20992
21021
|
const file = process.env["AGT_TURN_INITIATOR_FILE"];
|
|
20993
21022
|
if (!file) return null;
|
|
21023
|
+
const fromLedger = readTurnInitiatorFromLedger(file, maxAgeMs);
|
|
21024
|
+
if (fromLedger !== "no-ledger") return fromLedger;
|
|
20994
21025
|
try {
|
|
20995
21026
|
const raw = readFileSync(file, "utf8");
|
|
20996
21027
|
const m = JSON.parse(raw);
|
|
@@ -21207,7 +21238,7 @@ var awaitDecisionSchema = external_exports.object({
|
|
|
21207
21238
|
// package.json
|
|
21208
21239
|
var package_default = {
|
|
21209
21240
|
name: "@integrity-labs/xero-broker",
|
|
21210
|
-
version: "0.1.
|
|
21241
|
+
version: "0.1.3",
|
|
21211
21242
|
description: "Xero Broker \u2014 MCP server that routes money- and ledger-touching Xero writes through approval-core (HITL). Sibling to cloud-broker / channel-broker; the only write path for an agent once the vendor xero-mcp-server's write tools are stripped. ENG-4922.",
|
|
21212
21243
|
type: "module",
|
|
21213
21244
|
bin: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@integrity-labs/xero-broker",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Xero Broker — MCP server that routes money- and ledger-touching Xero writes through approval-core (HITL). Sibling to cloud-broker / channel-broker; the only write path for an agent once the vendor xero-mcp-server's write tools are stripped. ENG-4922.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|