@integrity-labs/agt-cli 0.28.1039 → 0.28.1041
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/bin/agt.js +5 -5
- package/dist/{chunk-X6D6UADI.js → chunk-7ORA3ZVJ.js} +4 -4
- package/dist/{chunk-TAWCN7OK.js → chunk-OHT4PWAK.js} +2 -2
- package/dist/{chunk-UB2HLH5P.js → chunk-TXRZFABA.js} +40 -5
- package/dist/{chunk-UB2HLH5P.js.map → chunk-TXRZFABA.js.map} +1 -1
- package/dist/{claude-pair-runtime-NKWXDI6H.js → claude-pair-runtime-JZU32YLZ.js} +2 -2
- package/dist/lib/manager-worker.js +14 -14
- package/dist/mcp/direct-chat-channel.js +39 -4
- package/dist/mcp/index.js +39 -4
- package/dist/mcp/origami.js +39 -4
- package/dist/mcp/slack-channel.js +39 -4
- package/dist/mcp/telegram-channel.js +39 -4
- package/dist/{persistent-session-QZAKDZIX.js → persistent-session-3IGNGFEX.js} +3 -3
- package/dist/{responsiveness-probe-6OG3SYLZ.js → responsiveness-probe-OVMYX6PK.js} +3 -3
- package/dist/{session-auth-dead-EH4N7PWU.js → session-auth-dead-EL5HEEEV.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-X6D6UADI.js.map → chunk-7ORA3ZVJ.js.map} +0 -0
- /package/dist/{chunk-TAWCN7OK.js.map → chunk-OHT4PWAK.js.map} +0 -0
- /package/dist/{claude-pair-runtime-NKWXDI6H.js.map → claude-pair-runtime-JZU32YLZ.js.map} +0 -0
- /package/dist/{persistent-session-QZAKDZIX.js.map → persistent-session-3IGNGFEX.js.map} +0 -0
- /package/dist/{responsiveness-probe-6OG3SYLZ.js.map → responsiveness-probe-OVMYX6PK.js.map} +0 -0
- /package/dist/{session-auth-dead-EH4N7PWU.js.map → session-auth-dead-EL5HEEEV.js.map} +0 -0
|
@@ -266,7 +266,7 @@ async function spawnPairSession(session) {
|
|
|
266
266
|
return { ok: true };
|
|
267
267
|
} catch {
|
|
268
268
|
}
|
|
269
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
269
|
+
const { resolveClaudeBinary } = await import("./persistent-session-3IGNGFEX.js");
|
|
270
270
|
const claudeBin = resolveClaudeBinary();
|
|
271
271
|
const pairEnv = {
|
|
272
272
|
...process.env,
|
|
@@ -734,4 +734,4 @@ export {
|
|
|
734
734
|
startClaudePair,
|
|
735
735
|
submitClaudePairCode
|
|
736
736
|
};
|
|
737
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
737
|
+
//# sourceMappingURL=claude-pair-runtime-JZU32YLZ.js.map
|
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
safeWriteJsonAtomic,
|
|
67
67
|
setConfigHash,
|
|
68
68
|
tripClass
|
|
69
|
-
} from "../chunk-
|
|
69
|
+
} from "../chunk-7ORA3ZVJ.js";
|
|
70
70
|
import {
|
|
71
71
|
getProjectDir as getProjectDir2,
|
|
72
72
|
getReadyTasks,
|
|
@@ -149,7 +149,7 @@ import {
|
|
|
149
149
|
takeZombieDetection,
|
|
150
150
|
toOpencodeModel,
|
|
151
151
|
writeEgressAllowlist
|
|
152
|
-
} from "../chunk-
|
|
152
|
+
} from "../chunk-OHT4PWAK.js";
|
|
153
153
|
import {
|
|
154
154
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
155
155
|
AnchorSessionClient,
|
|
@@ -254,7 +254,7 @@ import {
|
|
|
254
254
|
subagentActivityAgeSeconds,
|
|
255
255
|
sumTranscriptUsageInWindow,
|
|
256
256
|
transcriptActivityAgeSeconds
|
|
257
|
-
} from "../chunk-
|
|
257
|
+
} from "../chunk-TXRZFABA.js";
|
|
258
258
|
import {
|
|
259
259
|
classifyUnanswerablePane,
|
|
260
260
|
paneRemedy
|
|
@@ -13931,7 +13931,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
13931
13931
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
13932
13932
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
13933
13933
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
13934
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
13934
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-OVMYX6PK.js");
|
|
13935
13935
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
13936
13936
|
if (newest === null) return null;
|
|
13937
13937
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -14677,7 +14677,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
14677
14677
|
var lastVersionCheckAt = 0;
|
|
14678
14678
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
14679
14679
|
var lastResponsivenessProbeAt = 0;
|
|
14680
|
-
var agtCliVersion = true ? "0.28.
|
|
14680
|
+
var agtCliVersion = true ? "0.28.1041" : "dev";
|
|
14681
14681
|
function resolveBrewPath(execFileSync3) {
|
|
14682
14682
|
try {
|
|
14683
14683
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -16312,7 +16312,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
16312
16312
|
if (codeNames.length === 0) return;
|
|
16313
16313
|
void (async () => {
|
|
16314
16314
|
try {
|
|
16315
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
16315
|
+
const { collectDiagnostics } = await import("../persistent-session-3IGNGFEX.js");
|
|
16316
16316
|
await api.post("/host/heartbeat", {
|
|
16317
16317
|
host_id: hostId,
|
|
16318
16318
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -16454,7 +16454,7 @@ async function pollCycleInner() {
|
|
|
16454
16454
|
}
|
|
16455
16455
|
try {
|
|
16456
16456
|
const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
|
|
16457
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
16457
|
+
const { collectDiagnostics } = await import("../persistent-session-3IGNGFEX.js");
|
|
16458
16458
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
16459
16459
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
|
|
16460
16460
|
let tailscaleHostname;
|
|
@@ -16630,7 +16630,7 @@ async function pollCycleInner() {
|
|
|
16630
16630
|
collectPanelessActivityProbes,
|
|
16631
16631
|
getResponsivenessIntervalMs,
|
|
16632
16632
|
occupancyQualificationClassifications
|
|
16633
|
-
} = await import("../responsiveness-probe-
|
|
16633
|
+
} = await import("../responsiveness-probe-OVMYX6PK.js");
|
|
16634
16634
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
16635
16635
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
16636
16636
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -16747,7 +16747,7 @@ async function pollCycleInner() {
|
|
|
16747
16747
|
collectResponsivenessProbes,
|
|
16748
16748
|
livePendingInboundOldestAgeSeconds,
|
|
16749
16749
|
parkPendingInbound
|
|
16750
|
-
} = await import("../responsiveness-probe-
|
|
16750
|
+
} = await import("../responsiveness-probe-OVMYX6PK.js");
|
|
16751
16751
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
|
|
16752
16752
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
16753
16753
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -16903,7 +16903,7 @@ async function pollCycleInner() {
|
|
|
16903
16903
|
}
|
|
16904
16904
|
try {
|
|
16905
16905
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
|
|
16906
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
16906
|
+
const { probeSessionAuth } = await import("../session-auth-dead-EL5HEEEV.js");
|
|
16907
16907
|
const observations = [];
|
|
16908
16908
|
const pendingCacheCommits = [];
|
|
16909
16909
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -21446,7 +21446,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
21446
21446
|
try {
|
|
21447
21447
|
const freshId = rotateSessionForWedge(codeName);
|
|
21448
21448
|
consecutiveWedgeCycles.delete(codeName);
|
|
21449
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
21449
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-OVMYX6PK.js");
|
|
21450
21450
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
21451
21451
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
21452
21452
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -21489,7 +21489,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
21489
21489
|
void api.post("/host/restart-ack", { host_id: hostId, agent_id: agentId, restart_requested_at: requestedAt }).catch((err) => log(`[restart-lane] ack failed for '${codeName}': ${err.message}`));
|
|
21490
21490
|
void (async () => {
|
|
21491
21491
|
try {
|
|
21492
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
21492
|
+
const { collectDiagnostics } = await import("../persistent-session-3IGNGFEX.js");
|
|
21493
21493
|
await api.post("/host/heartbeat", {
|
|
21494
21494
|
host_id: hostId,
|
|
21495
21495
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -21540,7 +21540,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
21540
21540
|
}
|
|
21541
21541
|
try {
|
|
21542
21542
|
const hostId = await getHostId();
|
|
21543
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
21543
|
+
const { collectDiagnostics } = await import("../persistent-session-3IGNGFEX.js");
|
|
21544
21544
|
await api.post("/host/heartbeat", {
|
|
21545
21545
|
host_id: hostId,
|
|
21546
21546
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -22212,7 +22212,7 @@ async function processClaudePairSessions(agents) {
|
|
|
22212
22212
|
// cannot take it for itself — by the time it runs, the write it is looking
|
|
22213
22213
|
// for may already have happened.
|
|
22214
22214
|
snapshotPairConfig
|
|
22215
|
-
} = await import("../claude-pair-runtime-
|
|
22215
|
+
} = await import("../claude-pair-runtime-JZU32YLZ.js");
|
|
22216
22216
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
22217
22217
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
22218
22218
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -32966,10 +32966,45 @@ var OAUTH_PROVIDERS = {
|
|
|
32966
32966
|
// bill at creation time. Read-only would force a follow-up manual
|
|
32967
32967
|
// upload in Xero; write closes the loop.
|
|
32968
32968
|
"accounting.attachments",
|
|
32969
|
-
//
|
|
32970
|
-
//
|
|
32971
|
-
"
|
|
32972
|
-
|
|
32969
|
+
// payments: write (CS-1845) enables `xero.payment.create`, which does
|
|
32970
|
+
// PUT /Payments. These two were `.read` only, described as "surfaces we
|
|
32971
|
+
// don't yet need write access on" — but the xero-broker had ALREADY
|
|
32972
|
+
// registered write verbs against both, so the claim was false when it was
|
|
32973
|
+
// written and the verbs could never succeed. A live approval of AUD
|
|
32974
|
+
// 57,748.35 against INV-0407 was approved by a human and then failed with
|
|
32975
|
+
// Xero `401 {Title: Unauthorized, Detail: AuthorizationUnsuccessful}`,
|
|
32976
|
+
// AFTER the handler's single 401 refresh-retry — which is what rules out
|
|
32977
|
+
// an expired token: a freshly refreshed token still 401s when the GRANT
|
|
32978
|
+
// never carried the scope.
|
|
32979
|
+
//
|
|
32980
|
+
// banktransactions: write for the same reason — `xero.bank_transaction.delete`
|
|
32981
|
+
// is registered and would have failed identically the first time anyone
|
|
32982
|
+
// approved one. It is a DESTRUCTIVE verb, so it was one approval away from
|
|
32983
|
+
// being the more alarming report.
|
|
32984
|
+
//
|
|
32985
|
+
// The variant without `.read` is the read+write granular scope, so the
|
|
32986
|
+
// `.read` entries are gone from THIS list.
|
|
32987
|
+
//
|
|
32988
|
+
// That is not the same as "consent asks for them once" (Obi Wan
|
|
32989
|
+
// `167f3932fcdf` on #6564 corrected an earlier version of this comment,
|
|
32990
|
+
// which claimed it was). The authorize route unions `defaultScopes` with
|
|
32991
|
+
// `listAgentRequiredOAuthScopes` (lib/agent-oauth-scope-deficit.ts, called
|
|
32992
|
+
// from routes/integrations-oauth.ts), and the catalog's `xero:read` defined
|
|
32993
|
+
// scope still lists `accounting.payments.read` and
|
|
32994
|
+
// `accounting.banktransactions.read` in its `oauth_scopes` — so an agent
|
|
32995
|
+
// with xero:read installed requests the `.read` variants alongside these.
|
|
32996
|
+
// Harmless, because write implies read, but do not write comments here that
|
|
32997
|
+
// describe the consent string as though this array were all of it.
|
|
32998
|
+
//
|
|
32999
|
+
// DO NOT substitute the broad `accounting.transactions`: Xero rejects the
|
|
33000
|
+
// manifest for apps created after 2026-03-02 (see the note above).
|
|
33001
|
+
//
|
|
33002
|
+
// RECONNECT REQUIRED, same as `accounting.manualjournals` below: the broker
|
|
33003
|
+
// posts with the agent's own OAuth access_token, so every existing install
|
|
33004
|
+
// keeps failing until it reconnects and re-consents. Shipping this scope is
|
|
33005
|
+
// necessary and NOT sufficient.
|
|
33006
|
+
"accounting.payments",
|
|
33007
|
+
"accounting.banktransactions",
|
|
32973
33008
|
// manualjournals: write (CS-1439) enables the xero-broker to post
|
|
32974
33009
|
// manual journals (reclasses, accruals, corrections) on approval. The
|
|
32975
33010
|
// variant without `.read` is the read+write granular scope. Note: an
|
package/dist/mcp/index.js
CHANGED
|
@@ -25582,10 +25582,45 @@ var OAUTH_PROVIDERS = {
|
|
|
25582
25582
|
// bill at creation time. Read-only would force a follow-up manual
|
|
25583
25583
|
// upload in Xero; write closes the loop.
|
|
25584
25584
|
"accounting.attachments",
|
|
25585
|
-
//
|
|
25586
|
-
//
|
|
25587
|
-
"
|
|
25588
|
-
|
|
25585
|
+
// payments: write (CS-1845) enables `xero.payment.create`, which does
|
|
25586
|
+
// PUT /Payments. These two were `.read` only, described as "surfaces we
|
|
25587
|
+
// don't yet need write access on" — but the xero-broker had ALREADY
|
|
25588
|
+
// registered write verbs against both, so the claim was false when it was
|
|
25589
|
+
// written and the verbs could never succeed. A live approval of AUD
|
|
25590
|
+
// 57,748.35 against INV-0407 was approved by a human and then failed with
|
|
25591
|
+
// Xero `401 {Title: Unauthorized, Detail: AuthorizationUnsuccessful}`,
|
|
25592
|
+
// AFTER the handler's single 401 refresh-retry — which is what rules out
|
|
25593
|
+
// an expired token: a freshly refreshed token still 401s when the GRANT
|
|
25594
|
+
// never carried the scope.
|
|
25595
|
+
//
|
|
25596
|
+
// banktransactions: write for the same reason — `xero.bank_transaction.delete`
|
|
25597
|
+
// is registered and would have failed identically the first time anyone
|
|
25598
|
+
// approved one. It is a DESTRUCTIVE verb, so it was one approval away from
|
|
25599
|
+
// being the more alarming report.
|
|
25600
|
+
//
|
|
25601
|
+
// The variant without `.read` is the read+write granular scope, so the
|
|
25602
|
+
// `.read` entries are gone from THIS list.
|
|
25603
|
+
//
|
|
25604
|
+
// That is not the same as "consent asks for them once" (Obi Wan
|
|
25605
|
+
// `167f3932fcdf` on #6564 corrected an earlier version of this comment,
|
|
25606
|
+
// which claimed it was). The authorize route unions `defaultScopes` with
|
|
25607
|
+
// `listAgentRequiredOAuthScopes` (lib/agent-oauth-scope-deficit.ts, called
|
|
25608
|
+
// from routes/integrations-oauth.ts), and the catalog's `xero:read` defined
|
|
25609
|
+
// scope still lists `accounting.payments.read` and
|
|
25610
|
+
// `accounting.banktransactions.read` in its `oauth_scopes` — so an agent
|
|
25611
|
+
// with xero:read installed requests the `.read` variants alongside these.
|
|
25612
|
+
// Harmless, because write implies read, but do not write comments here that
|
|
25613
|
+
// describe the consent string as though this array were all of it.
|
|
25614
|
+
//
|
|
25615
|
+
// DO NOT substitute the broad `accounting.transactions`: Xero rejects the
|
|
25616
|
+
// manifest for apps created after 2026-03-02 (see the note above).
|
|
25617
|
+
//
|
|
25618
|
+
// RECONNECT REQUIRED, same as `accounting.manualjournals` below: the broker
|
|
25619
|
+
// posts with the agent's own OAuth access_token, so every existing install
|
|
25620
|
+
// keeps failing until it reconnects and re-consents. Shipping this scope is
|
|
25621
|
+
// necessary and NOT sufficient.
|
|
25622
|
+
"accounting.payments",
|
|
25623
|
+
"accounting.banktransactions",
|
|
25589
25624
|
// manualjournals: write (CS-1439) enables the xero-broker to post
|
|
25590
25625
|
// manual journals (reclasses, accruals, corrections) on approval. The
|
|
25591
25626
|
// variant without `.read` is the read+write granular scope. Note: an
|
package/dist/mcp/origami.js
CHANGED
|
@@ -39699,10 +39699,45 @@ var OAUTH_PROVIDERS = {
|
|
|
39699
39699
|
// bill at creation time. Read-only would force a follow-up manual
|
|
39700
39700
|
// upload in Xero; write closes the loop.
|
|
39701
39701
|
"accounting.attachments",
|
|
39702
|
-
//
|
|
39703
|
-
//
|
|
39704
|
-
"
|
|
39705
|
-
|
|
39702
|
+
// payments: write (CS-1845) enables `xero.payment.create`, which does
|
|
39703
|
+
// PUT /Payments. These two were `.read` only, described as "surfaces we
|
|
39704
|
+
// don't yet need write access on" — but the xero-broker had ALREADY
|
|
39705
|
+
// registered write verbs against both, so the claim was false when it was
|
|
39706
|
+
// written and the verbs could never succeed. A live approval of AUD
|
|
39707
|
+
// 57,748.35 against INV-0407 was approved by a human and then failed with
|
|
39708
|
+
// Xero `401 {Title: Unauthorized, Detail: AuthorizationUnsuccessful}`,
|
|
39709
|
+
// AFTER the handler's single 401 refresh-retry — which is what rules out
|
|
39710
|
+
// an expired token: a freshly refreshed token still 401s when the GRANT
|
|
39711
|
+
// never carried the scope.
|
|
39712
|
+
//
|
|
39713
|
+
// banktransactions: write for the same reason — `xero.bank_transaction.delete`
|
|
39714
|
+
// is registered and would have failed identically the first time anyone
|
|
39715
|
+
// approved one. It is a DESTRUCTIVE verb, so it was one approval away from
|
|
39716
|
+
// being the more alarming report.
|
|
39717
|
+
//
|
|
39718
|
+
// The variant without `.read` is the read+write granular scope, so the
|
|
39719
|
+
// `.read` entries are gone from THIS list.
|
|
39720
|
+
//
|
|
39721
|
+
// That is not the same as "consent asks for them once" (Obi Wan
|
|
39722
|
+
// `167f3932fcdf` on #6564 corrected an earlier version of this comment,
|
|
39723
|
+
// which claimed it was). The authorize route unions `defaultScopes` with
|
|
39724
|
+
// `listAgentRequiredOAuthScopes` (lib/agent-oauth-scope-deficit.ts, called
|
|
39725
|
+
// from routes/integrations-oauth.ts), and the catalog's `xero:read` defined
|
|
39726
|
+
// scope still lists `accounting.payments.read` and
|
|
39727
|
+
// `accounting.banktransactions.read` in its `oauth_scopes` — so an agent
|
|
39728
|
+
// with xero:read installed requests the `.read` variants alongside these.
|
|
39729
|
+
// Harmless, because write implies read, but do not write comments here that
|
|
39730
|
+
// describe the consent string as though this array were all of it.
|
|
39731
|
+
//
|
|
39732
|
+
// DO NOT substitute the broad `accounting.transactions`: Xero rejects the
|
|
39733
|
+
// manifest for apps created after 2026-03-02 (see the note above).
|
|
39734
|
+
//
|
|
39735
|
+
// RECONNECT REQUIRED, same as `accounting.manualjournals` below: the broker
|
|
39736
|
+
// posts with the agent's own OAuth access_token, so every existing install
|
|
39737
|
+
// keeps failing until it reconnects and re-consents. Shipping this scope is
|
|
39738
|
+
// necessary and NOT sufficient.
|
|
39739
|
+
"accounting.payments",
|
|
39740
|
+
"accounting.banktransactions",
|
|
39706
39741
|
// manualjournals: write (CS-1439) enables the xero-broker to post
|
|
39707
39742
|
// manual journals (reclasses, accruals, corrections) on approval. The
|
|
39708
39743
|
// variant without `.read` is the read+write granular scope. Note: an
|
|
@@ -33916,10 +33916,45 @@ var OAUTH_PROVIDERS = {
|
|
|
33916
33916
|
// bill at creation time. Read-only would force a follow-up manual
|
|
33917
33917
|
// upload in Xero; write closes the loop.
|
|
33918
33918
|
"accounting.attachments",
|
|
33919
|
-
//
|
|
33920
|
-
//
|
|
33921
|
-
"
|
|
33922
|
-
|
|
33919
|
+
// payments: write (CS-1845) enables `xero.payment.create`, which does
|
|
33920
|
+
// PUT /Payments. These two were `.read` only, described as "surfaces we
|
|
33921
|
+
// don't yet need write access on" — but the xero-broker had ALREADY
|
|
33922
|
+
// registered write verbs against both, so the claim was false when it was
|
|
33923
|
+
// written and the verbs could never succeed. A live approval of AUD
|
|
33924
|
+
// 57,748.35 against INV-0407 was approved by a human and then failed with
|
|
33925
|
+
// Xero `401 {Title: Unauthorized, Detail: AuthorizationUnsuccessful}`,
|
|
33926
|
+
// AFTER the handler's single 401 refresh-retry — which is what rules out
|
|
33927
|
+
// an expired token: a freshly refreshed token still 401s when the GRANT
|
|
33928
|
+
// never carried the scope.
|
|
33929
|
+
//
|
|
33930
|
+
// banktransactions: write for the same reason — `xero.bank_transaction.delete`
|
|
33931
|
+
// is registered and would have failed identically the first time anyone
|
|
33932
|
+
// approved one. It is a DESTRUCTIVE verb, so it was one approval away from
|
|
33933
|
+
// being the more alarming report.
|
|
33934
|
+
//
|
|
33935
|
+
// The variant without `.read` is the read+write granular scope, so the
|
|
33936
|
+
// `.read` entries are gone from THIS list.
|
|
33937
|
+
//
|
|
33938
|
+
// That is not the same as "consent asks for them once" (Obi Wan
|
|
33939
|
+
// `167f3932fcdf` on #6564 corrected an earlier version of this comment,
|
|
33940
|
+
// which claimed it was). The authorize route unions `defaultScopes` with
|
|
33941
|
+
// `listAgentRequiredOAuthScopes` (lib/agent-oauth-scope-deficit.ts, called
|
|
33942
|
+
// from routes/integrations-oauth.ts), and the catalog's `xero:read` defined
|
|
33943
|
+
// scope still lists `accounting.payments.read` and
|
|
33944
|
+
// `accounting.banktransactions.read` in its `oauth_scopes` — so an agent
|
|
33945
|
+
// with xero:read installed requests the `.read` variants alongside these.
|
|
33946
|
+
// Harmless, because write implies read, but do not write comments here that
|
|
33947
|
+
// describe the consent string as though this array were all of it.
|
|
33948
|
+
//
|
|
33949
|
+
// DO NOT substitute the broad `accounting.transactions`: Xero rejects the
|
|
33950
|
+
// manifest for apps created after 2026-03-02 (see the note above).
|
|
33951
|
+
//
|
|
33952
|
+
// RECONNECT REQUIRED, same as `accounting.manualjournals` below: the broker
|
|
33953
|
+
// posts with the agent's own OAuth access_token, so every existing install
|
|
33954
|
+
// keeps failing until it reconnects and re-consents. Shipping this scope is
|
|
33955
|
+
// necessary and NOT sufficient.
|
|
33956
|
+
"accounting.payments",
|
|
33957
|
+
"accounting.banktransactions",
|
|
33923
33958
|
// manualjournals: write (CS-1439) enables the xero-broker to post
|
|
33924
33959
|
// manual journals (reclasses, accruals, corrections) on approval. The
|
|
33925
33960
|
// variant without `.read` is the read+write granular scope. Note: an
|
|
@@ -34028,10 +34028,45 @@ var OAUTH_PROVIDERS = {
|
|
|
34028
34028
|
// bill at creation time. Read-only would force a follow-up manual
|
|
34029
34029
|
// upload in Xero; write closes the loop.
|
|
34030
34030
|
"accounting.attachments",
|
|
34031
|
-
//
|
|
34032
|
-
//
|
|
34033
|
-
"
|
|
34034
|
-
|
|
34031
|
+
// payments: write (CS-1845) enables `xero.payment.create`, which does
|
|
34032
|
+
// PUT /Payments. These two were `.read` only, described as "surfaces we
|
|
34033
|
+
// don't yet need write access on" — but the xero-broker had ALREADY
|
|
34034
|
+
// registered write verbs against both, so the claim was false when it was
|
|
34035
|
+
// written and the verbs could never succeed. A live approval of AUD
|
|
34036
|
+
// 57,748.35 against INV-0407 was approved by a human and then failed with
|
|
34037
|
+
// Xero `401 {Title: Unauthorized, Detail: AuthorizationUnsuccessful}`,
|
|
34038
|
+
// AFTER the handler's single 401 refresh-retry — which is what rules out
|
|
34039
|
+
// an expired token: a freshly refreshed token still 401s when the GRANT
|
|
34040
|
+
// never carried the scope.
|
|
34041
|
+
//
|
|
34042
|
+
// banktransactions: write for the same reason — `xero.bank_transaction.delete`
|
|
34043
|
+
// is registered and would have failed identically the first time anyone
|
|
34044
|
+
// approved one. It is a DESTRUCTIVE verb, so it was one approval away from
|
|
34045
|
+
// being the more alarming report.
|
|
34046
|
+
//
|
|
34047
|
+
// The variant without `.read` is the read+write granular scope, so the
|
|
34048
|
+
// `.read` entries are gone from THIS list.
|
|
34049
|
+
//
|
|
34050
|
+
// That is not the same as "consent asks for them once" (Obi Wan
|
|
34051
|
+
// `167f3932fcdf` on #6564 corrected an earlier version of this comment,
|
|
34052
|
+
// which claimed it was). The authorize route unions `defaultScopes` with
|
|
34053
|
+
// `listAgentRequiredOAuthScopes` (lib/agent-oauth-scope-deficit.ts, called
|
|
34054
|
+
// from routes/integrations-oauth.ts), and the catalog's `xero:read` defined
|
|
34055
|
+
// scope still lists `accounting.payments.read` and
|
|
34056
|
+
// `accounting.banktransactions.read` in its `oauth_scopes` — so an agent
|
|
34057
|
+
// with xero:read installed requests the `.read` variants alongside these.
|
|
34058
|
+
// Harmless, because write implies read, but do not write comments here that
|
|
34059
|
+
// describe the consent string as though this array were all of it.
|
|
34060
|
+
//
|
|
34061
|
+
// DO NOT substitute the broad `accounting.transactions`: Xero rejects the
|
|
34062
|
+
// manifest for apps created after 2026-03-02 (see the note above).
|
|
34063
|
+
//
|
|
34064
|
+
// RECONNECT REQUIRED, same as `accounting.manualjournals` below: the broker
|
|
34065
|
+
// posts with the agent's own OAuth access_token, so every existing install
|
|
34066
|
+
// keeps failing until it reconnects and re-consents. Shipping this scope is
|
|
34067
|
+
// necessary and NOT sufficient.
|
|
34068
|
+
"accounting.payments",
|
|
34069
|
+
"accounting.banktransactions",
|
|
34035
34070
|
// manualjournals: write (CS-1439) enables the xero-broker to post
|
|
34036
34071
|
// manual journals (reclasses, accruals, corrections) on approval. The
|
|
34037
34072
|
// variant without `.read` is the read+write granular scope. Note: an
|
|
@@ -65,8 +65,8 @@ import {
|
|
|
65
65
|
writeDirectChatSessionState,
|
|
66
66
|
writeEgressAllowlist,
|
|
67
67
|
writePersistentClaudeWrapper
|
|
68
|
-
} from "./chunk-
|
|
69
|
-
import "./chunk-
|
|
68
|
+
} from "./chunk-OHT4PWAK.js";
|
|
69
|
+
import "./chunk-TXRZFABA.js";
|
|
70
70
|
import "./chunk-TQDIIS3X.js";
|
|
71
71
|
import "./chunk-XWVM4KPK.js";
|
|
72
72
|
import "./chunk-EL5MWGGH.js";
|
|
@@ -139,4 +139,4 @@ export {
|
|
|
139
139
|
writeEgressAllowlist,
|
|
140
140
|
writePersistentClaudeWrapper
|
|
141
141
|
};
|
|
142
|
-
//# sourceMappingURL=persistent-session-
|
|
142
|
+
//# sourceMappingURL=persistent-session-3IGNGFEX.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-OHT4PWAK.js";
|
|
4
|
+
import "./chunk-TXRZFABA.js";
|
|
5
5
|
import "./chunk-TQDIIS3X.js";
|
|
6
6
|
import "./chunk-XWVM4KPK.js";
|
|
7
7
|
import "./chunk-EL5MWGGH.js";
|
|
@@ -802,4 +802,4 @@ export {
|
|
|
802
802
|
readAndResetSlackReplyBindingClassifications,
|
|
803
803
|
readAndResetSlackReplyTargetClassifications
|
|
804
804
|
};
|
|
805
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
805
|
+
//# sourceMappingURL=responsiveness-probe-OVMYX6PK.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TXRZFABA.js";
|
|
4
4
|
import "./chunk-DGUM43GV.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/session-auth-dead.ts
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
decideSessionAuthState,
|
|
205
205
|
probeSessionAuth
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=session-auth-dead-
|
|
207
|
+
//# sourceMappingURL=session-auth-dead-EL5HEEEV.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|