@integrity-labs/agt-cli 0.28.650 → 0.28.651
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-CSLG2XMX.js → chunk-EUXCRRZU.js} +2 -2
- package/dist/{chunk-5DXWVKCZ.js → chunk-EXMRWMXQ.js} +4 -4
- package/dist/{chunk-ZAZKEL4Y.js → chunk-V5MUX3GI.js} +14 -7
- package/dist/chunk-V5MUX3GI.js.map +1 -0
- package/dist/{claude-pair-runtime-ENRW5IDG.js → claude-pair-runtime-U52EA7NZ.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/direct-chat-channel.js +13 -6
- package/dist/mcp/index.js +13 -6
- package/dist/mcp/origami.js +13 -6
- package/dist/mcp/slack-channel.js +13 -6
- package/dist/mcp/telegram-channel.js +13 -6
- package/dist/{persistent-session-2JT7HIFF.js → persistent-session-DVZESZDD.js} +3 -3
- package/dist/{responsiveness-probe-5TOZHK3H.js → responsiveness-probe-Q7SVASQS.js} +3 -3
- package/dist/{session-auth-dead-PFCVB7MZ.js → session-auth-dead-RV3Z64TM.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-ZAZKEL4Y.js.map +0 -1
- /package/dist/{chunk-CSLG2XMX.js.map → chunk-EUXCRRZU.js.map} +0 -0
- /package/dist/{chunk-5DXWVKCZ.js.map → chunk-EXMRWMXQ.js.map} +0 -0
- /package/dist/{claude-pair-runtime-ENRW5IDG.js.map → claude-pair-runtime-U52EA7NZ.js.map} +0 -0
- /package/dist/{persistent-session-2JT7HIFF.js.map → persistent-session-DVZESZDD.js.map} +0 -0
- /package/dist/{responsiveness-probe-5TOZHK3H.js.map → responsiveness-probe-Q7SVASQS.js.map} +0 -0
- /package/dist/{session-auth-dead-PFCVB7MZ.js.map → session-auth-dead-RV3Z64TM.js.map} +0 -0
|
@@ -100,7 +100,7 @@ async function spawnPairSession(session) {
|
|
|
100
100
|
return { ok: true };
|
|
101
101
|
} catch {
|
|
102
102
|
}
|
|
103
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
103
|
+
const { resolveClaudeBinary } = await import("./persistent-session-DVZESZDD.js");
|
|
104
104
|
const claudeBin = resolveClaudeBinary();
|
|
105
105
|
const pairEnv = {
|
|
106
106
|
...process.env,
|
|
@@ -373,4 +373,4 @@ export {
|
|
|
373
373
|
startClaudePair,
|
|
374
374
|
submitClaudePairCode
|
|
375
375
|
};
|
|
376
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
376
|
+
//# sourceMappingURL=claude-pair-runtime-U52EA7NZ.js.map
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
safeWriteJsonAtomic,
|
|
56
56
|
setConfigHash,
|
|
57
57
|
tripClass
|
|
58
|
-
} from "../chunk-
|
|
58
|
+
} from "../chunk-EXMRWMXQ.js";
|
|
59
59
|
import {
|
|
60
60
|
getProjectDir as getProjectDir2,
|
|
61
61
|
getReadyTasks,
|
|
@@ -111,7 +111,7 @@ import {
|
|
|
111
111
|
takeZombieDetection,
|
|
112
112
|
toOpencodeModel,
|
|
113
113
|
writeEgressAllowlist
|
|
114
|
-
} from "../chunk-
|
|
114
|
+
} from "../chunk-EUXCRRZU.js";
|
|
115
115
|
import {
|
|
116
116
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
117
117
|
AnchorSessionClient,
|
|
@@ -192,7 +192,7 @@ import {
|
|
|
192
192
|
subagentActivityAgeSeconds,
|
|
193
193
|
sumTranscriptUsageInWindow,
|
|
194
194
|
transcriptActivityAgeSeconds
|
|
195
|
-
} from "../chunk-
|
|
195
|
+
} from "../chunk-V5MUX3GI.js";
|
|
196
196
|
import {
|
|
197
197
|
reapOrphanChannelMcps
|
|
198
198
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -11609,7 +11609,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
11609
11609
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
11610
11610
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
11611
11611
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
11612
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
11612
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-Q7SVASQS.js");
|
|
11613
11613
|
const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
|
|
11614
11614
|
if (newest === null) return null;
|
|
11615
11615
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -12252,7 +12252,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
12252
12252
|
var lastVersionCheckAt = 0;
|
|
12253
12253
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
12254
12254
|
var lastResponsivenessProbeAt = 0;
|
|
12255
|
-
var agtCliVersion = true ? "0.28.
|
|
12255
|
+
var agtCliVersion = true ? "0.28.651" : "dev";
|
|
12256
12256
|
function resolveBrewPath(execFileSync3) {
|
|
12257
12257
|
try {
|
|
12258
12258
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -13560,7 +13560,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
13560
13560
|
if (codeNames.length === 0) return;
|
|
13561
13561
|
void (async () => {
|
|
13562
13562
|
try {
|
|
13563
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13563
|
+
const { collectDiagnostics } = await import("../persistent-session-DVZESZDD.js");
|
|
13564
13564
|
await api.post("/host/heartbeat", {
|
|
13565
13565
|
host_id: hostId,
|
|
13566
13566
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -13676,7 +13676,7 @@ async function pollCycleInner() {
|
|
|
13676
13676
|
}
|
|
13677
13677
|
try {
|
|
13678
13678
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
13679
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13679
|
+
const { collectDiagnostics } = await import("../persistent-session-DVZESZDD.js");
|
|
13680
13680
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
13681
13681
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor) : void 0;
|
|
13682
13682
|
let tailscaleHostname;
|
|
@@ -13799,7 +13799,7 @@ async function pollCycleInner() {
|
|
|
13799
13799
|
collectPanelessActivityProbes,
|
|
13800
13800
|
getResponsivenessIntervalMs,
|
|
13801
13801
|
occupancyQualificationClassifications
|
|
13802
|
-
} = await import("../responsiveness-probe-
|
|
13802
|
+
} = await import("../responsiveness-probe-Q7SVASQS.js");
|
|
13803
13803
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
13804
13804
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
13805
13805
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -13909,7 +13909,7 @@ async function pollCycleInner() {
|
|
|
13909
13909
|
collectResponsivenessProbes,
|
|
13910
13910
|
livePendingInboundOldestAgeSeconds,
|
|
13911
13911
|
parkPendingInbound
|
|
13912
|
-
} = await import("../responsiveness-probe-
|
|
13912
|
+
} = await import("../responsiveness-probe-Q7SVASQS.js");
|
|
13913
13913
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
13914
13914
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
13915
13915
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -14065,7 +14065,7 @@ async function pollCycleInner() {
|
|
|
14065
14065
|
}
|
|
14066
14066
|
try {
|
|
14067
14067
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
14068
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
14068
|
+
const { probeSessionAuth } = await import("../session-auth-dead-RV3Z64TM.js");
|
|
14069
14069
|
const observations = [];
|
|
14070
14070
|
const pendingCacheCommits = [];
|
|
14071
14071
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -17698,7 +17698,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
17698
17698
|
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}`));
|
|
17699
17699
|
void (async () => {
|
|
17700
17700
|
try {
|
|
17701
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17701
|
+
const { collectDiagnostics } = await import("../persistent-session-DVZESZDD.js");
|
|
17702
17702
|
await api.post("/host/heartbeat", {
|
|
17703
17703
|
host_id: hostId,
|
|
17704
17704
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -17749,7 +17749,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
17749
17749
|
}
|
|
17750
17750
|
try {
|
|
17751
17751
|
const hostId = await getHostId();
|
|
17752
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17752
|
+
const { collectDiagnostics } = await import("../persistent-session-DVZESZDD.js");
|
|
17753
17753
|
await api.post("/host/heartbeat", {
|
|
17754
17754
|
host_id: hostId,
|
|
17755
17755
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -18346,7 +18346,7 @@ async function processClaudePairSessions(agents) {
|
|
|
18346
18346
|
killPairSession,
|
|
18347
18347
|
pairTmuxSession,
|
|
18348
18348
|
finalizeClaudePairOnboarding
|
|
18349
|
-
} = await import("../claude-pair-runtime-
|
|
18349
|
+
} = await import("../claude-pair-runtime-U52EA7NZ.js");
|
|
18350
18350
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
18351
18351
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
18352
18352
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -32209,6 +32209,9 @@ var TIER_PATTERNS = [
|
|
|
32209
32209
|
}
|
|
32210
32210
|
];
|
|
32211
32211
|
|
|
32212
|
+
// ../core/dist/integrations/pending-approval.js
|
|
32213
|
+
var PENDING_APPROVAL_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
32214
|
+
|
|
32212
32215
|
// ../core/dist/integrations/augmented-live/markup.js
|
|
32213
32216
|
var MARKUP_MARKER = "__augmentedLiveMarkup";
|
|
32214
32217
|
var MARKUP_CONTROL_MARKER = "__augmentedLiveMarkupControl";
|
|
@@ -36354,18 +36357,22 @@ var FLAG_REGISTRY = [
|
|
|
36354
36357
|
},
|
|
36355
36358
|
{
|
|
36356
36359
|
key: "ninjafy-brand",
|
|
36357
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is USER-FACING BRAND
|
|
36360
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: EVERY consumer evaluates in the active-org cookie scope \u2014 sidebar.tsx and top-nav.tsx via usePublicBooleanFlag, and (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 so a host- or agent-scoped row is accepted by the table but never reached by the console. The THEME is resolved SERVER-side deliberately (ENG-8858): the client hook starts at its default and updates after an async GET /flags, so gating a palette on it paints Augmented and repaints \u2014 a full-page colour flash, not just the wordmark flash it already causes. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
36358
36361
|
flagType: "boolean",
|
|
36359
36362
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
36360
36363
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
36361
36364
|
// that is currently live and contractually correct, never leak an unannounced
|
|
36362
36365
|
// rebrand to every customer at once.
|
|
36363
36366
|
defaultValue: false,
|
|
36364
|
-
// Read
|
|
36365
|
-
//
|
|
36366
|
-
//
|
|
36367
|
-
//
|
|
36368
|
-
//
|
|
36367
|
+
// Read on BOTH sides, so the key must be in the browser-exposed public map:
|
|
36368
|
+
// sidebar.tsx and top-nav.tsx are "use client" and resolve it via
|
|
36369
|
+
// usePublicBooleanFlag for the WORDMARK, while (dashboard)/layout.tsx resolves
|
|
36370
|
+
// it server-side via getPublicBooleanFlagServer for the THEME (ENG-8858) — a
|
|
36371
|
+
// palette cannot wait for an async client fetch without flashing. Dropping
|
|
36372
|
+
// `public` would break the two client readers, not just the server one.
|
|
36373
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — every
|
|
36374
|
+
// reader evaluates inside the active-org cookie's scope, which is exactly the
|
|
36375
|
+
// org whose brand should be shown.
|
|
36369
36376
|
public: true
|
|
36370
36377
|
},
|
|
36371
36378
|
{
|
package/dist/mcp/index.js
CHANGED
|
@@ -39548,6 +39548,9 @@ var TIER_PATTERNS = [
|
|
|
39548
39548
|
}
|
|
39549
39549
|
];
|
|
39550
39550
|
|
|
39551
|
+
// ../core/dist/integrations/pending-approval.js
|
|
39552
|
+
var PENDING_APPROVAL_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
39553
|
+
|
|
39551
39554
|
// ../core/dist/integrations/augmented-live/markup.js
|
|
39552
39555
|
var MARKUP_MARKER = "__augmentedLiveMarkup";
|
|
39553
39556
|
var MARKUP_CONTROL_MARKER = "__augmentedLiveMarkupControl";
|
|
@@ -43244,18 +43247,22 @@ var FLAG_REGISTRY = [
|
|
|
43244
43247
|
},
|
|
43245
43248
|
{
|
|
43246
43249
|
key: "ninjafy-brand",
|
|
43247
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is USER-FACING BRAND
|
|
43250
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: EVERY consumer evaluates in the active-org cookie scope \u2014 sidebar.tsx and top-nav.tsx via usePublicBooleanFlag, and (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 so a host- or agent-scoped row is accepted by the table but never reached by the console. The THEME is resolved SERVER-side deliberately (ENG-8858): the client hook starts at its default and updates after an async GET /flags, so gating a palette on it paints Augmented and repaints \u2014 a full-page colour flash, not just the wordmark flash it already causes. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
43248
43251
|
flagType: "boolean",
|
|
43249
43252
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
43250
43253
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
43251
43254
|
// that is currently live and contractually correct, never leak an unannounced
|
|
43252
43255
|
// rebrand to every customer at once.
|
|
43253
43256
|
defaultValue: false,
|
|
43254
|
-
// Read
|
|
43255
|
-
//
|
|
43256
|
-
//
|
|
43257
|
-
//
|
|
43258
|
-
//
|
|
43257
|
+
// Read on BOTH sides, so the key must be in the browser-exposed public map:
|
|
43258
|
+
// sidebar.tsx and top-nav.tsx are "use client" and resolve it via
|
|
43259
|
+
// usePublicBooleanFlag for the WORDMARK, while (dashboard)/layout.tsx resolves
|
|
43260
|
+
// it server-side via getPublicBooleanFlagServer for the THEME (ENG-8858) — a
|
|
43261
|
+
// palette cannot wait for an async client fetch without flashing. Dropping
|
|
43262
|
+
// `public` would break the two client readers, not just the server one.
|
|
43263
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — every
|
|
43264
|
+
// reader evaluates inside the active-org cookie's scope, which is exactly the
|
|
43265
|
+
// org whose brand should be shown.
|
|
43259
43266
|
public: true
|
|
43260
43267
|
},
|
|
43261
43268
|
{
|
package/dist/mcp/origami.js
CHANGED
|
@@ -38429,6 +38429,9 @@ var TIER_PATTERNS = [
|
|
|
38429
38429
|
}
|
|
38430
38430
|
];
|
|
38431
38431
|
|
|
38432
|
+
// ../core/dist/integrations/pending-approval.js
|
|
38433
|
+
var PENDING_APPROVAL_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
38434
|
+
|
|
38432
38435
|
// ../core/dist/integrations/augmented-live/markup.js
|
|
38433
38436
|
var MARKUP_MARKER = "__augmentedLiveMarkup";
|
|
38434
38437
|
var MARKUP_CONTROL_MARKER = "__augmentedLiveMarkupControl";
|
|
@@ -42104,18 +42107,22 @@ var FLAG_REGISTRY = [
|
|
|
42104
42107
|
},
|
|
42105
42108
|
{
|
|
42106
42109
|
key: "ninjafy-brand",
|
|
42107
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is USER-FACING BRAND
|
|
42110
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: EVERY consumer evaluates in the active-org cookie scope \u2014 sidebar.tsx and top-nav.tsx via usePublicBooleanFlag, and (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 so a host- or agent-scoped row is accepted by the table but never reached by the console. The THEME is resolved SERVER-side deliberately (ENG-8858): the client hook starts at its default and updates after an async GET /flags, so gating a palette on it paints Augmented and repaints \u2014 a full-page colour flash, not just the wordmark flash it already causes. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
42108
42111
|
flagType: "boolean",
|
|
42109
42112
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
42110
42113
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
42111
42114
|
// that is currently live and contractually correct, never leak an unannounced
|
|
42112
42115
|
// rebrand to every customer at once.
|
|
42113
42116
|
defaultValue: false,
|
|
42114
|
-
// Read
|
|
42115
|
-
//
|
|
42116
|
-
//
|
|
42117
|
-
//
|
|
42118
|
-
//
|
|
42117
|
+
// Read on BOTH sides, so the key must be in the browser-exposed public map:
|
|
42118
|
+
// sidebar.tsx and top-nav.tsx are "use client" and resolve it via
|
|
42119
|
+
// usePublicBooleanFlag for the WORDMARK, while (dashboard)/layout.tsx resolves
|
|
42120
|
+
// it server-side via getPublicBooleanFlagServer for the THEME (ENG-8858) — a
|
|
42121
|
+
// palette cannot wait for an async client fetch without flashing. Dropping
|
|
42122
|
+
// `public` would break the two client readers, not just the server one.
|
|
42123
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — every
|
|
42124
|
+
// reader evaluates inside the active-org cookie's scope, which is exactly the
|
|
42125
|
+
// org whose brand should be shown.
|
|
42119
42126
|
public: true
|
|
42120
42127
|
},
|
|
42121
42128
|
{
|
|
@@ -32489,6 +32489,9 @@ var TIER_PATTERNS = [
|
|
|
32489
32489
|
}
|
|
32490
32490
|
];
|
|
32491
32491
|
|
|
32492
|
+
// ../core/dist/integrations/pending-approval.js
|
|
32493
|
+
var PENDING_APPROVAL_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
32494
|
+
|
|
32492
32495
|
// ../core/dist/integrations/augmented-live/markup.js
|
|
32493
32496
|
var MARKUP_MARKER = "__augmentedLiveMarkup";
|
|
32494
32497
|
var MARKUP_CONTROL_MARKER = "__augmentedLiveMarkupControl";
|
|
@@ -36587,18 +36590,22 @@ var FLAG_REGISTRY = [
|
|
|
36587
36590
|
},
|
|
36588
36591
|
{
|
|
36589
36592
|
key: "ninjafy-brand",
|
|
36590
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is USER-FACING BRAND
|
|
36593
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: EVERY consumer evaluates in the active-org cookie scope \u2014 sidebar.tsx and top-nav.tsx via usePublicBooleanFlag, and (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 so a host- or agent-scoped row is accepted by the table but never reached by the console. The THEME is resolved SERVER-side deliberately (ENG-8858): the client hook starts at its default and updates after an async GET /flags, so gating a palette on it paints Augmented and repaints \u2014 a full-page colour flash, not just the wordmark flash it already causes. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
36591
36594
|
flagType: "boolean",
|
|
36592
36595
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
36593
36596
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
36594
36597
|
// that is currently live and contractually correct, never leak an unannounced
|
|
36595
36598
|
// rebrand to every customer at once.
|
|
36596
36599
|
defaultValue: false,
|
|
36597
|
-
// Read
|
|
36598
|
-
//
|
|
36599
|
-
//
|
|
36600
|
-
//
|
|
36601
|
-
//
|
|
36600
|
+
// Read on BOTH sides, so the key must be in the browser-exposed public map:
|
|
36601
|
+
// sidebar.tsx and top-nav.tsx are "use client" and resolve it via
|
|
36602
|
+
// usePublicBooleanFlag for the WORDMARK, while (dashboard)/layout.tsx resolves
|
|
36603
|
+
// it server-side via getPublicBooleanFlagServer for the THEME (ENG-8858) — a
|
|
36604
|
+
// palette cannot wait for an async client fetch without flashing. Dropping
|
|
36605
|
+
// `public` would break the two client readers, not just the server one.
|
|
36606
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — every
|
|
36607
|
+
// reader evaluates inside the active-org cookie's scope, which is exactly the
|
|
36608
|
+
// org whose brand should be shown.
|
|
36602
36609
|
public: true
|
|
36603
36610
|
},
|
|
36604
36611
|
{
|
|
@@ -32639,6 +32639,9 @@ var TIER_PATTERNS = [
|
|
|
32639
32639
|
}
|
|
32640
32640
|
];
|
|
32641
32641
|
|
|
32642
|
+
// ../core/dist/integrations/pending-approval.js
|
|
32643
|
+
var PENDING_APPROVAL_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
32644
|
+
|
|
32642
32645
|
// ../core/dist/integrations/augmented-live/markup.js
|
|
32643
32646
|
var MARKUP_MARKER = "__augmentedLiveMarkup";
|
|
32644
32647
|
var MARKUP_CONTROL_MARKER = "__augmentedLiveMarkupControl";
|
|
@@ -36731,18 +36734,22 @@ var FLAG_REGISTRY = [
|
|
|
36731
36734
|
},
|
|
36732
36735
|
{
|
|
36733
36736
|
key: "ninjafy-brand",
|
|
36734
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is USER-FACING BRAND
|
|
36737
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: EVERY consumer evaluates in the active-org cookie scope \u2014 sidebar.tsx and top-nav.tsx via usePublicBooleanFlag, and (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 so a host- or agent-scoped row is accepted by the table but never reached by the console. The THEME is resolved SERVER-side deliberately (ENG-8858): the client hook starts at its default and updates after an async GET /flags, so gating a palette on it paints Augmented and repaints \u2014 a full-page colour flash, not just the wordmark flash it already causes. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
36735
36738
|
flagType: "boolean",
|
|
36736
36739
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
36737
36740
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
36738
36741
|
// that is currently live and contractually correct, never leak an unannounced
|
|
36739
36742
|
// rebrand to every customer at once.
|
|
36740
36743
|
defaultValue: false,
|
|
36741
|
-
// Read
|
|
36742
|
-
//
|
|
36743
|
-
//
|
|
36744
|
-
//
|
|
36745
|
-
//
|
|
36744
|
+
// Read on BOTH sides, so the key must be in the browser-exposed public map:
|
|
36745
|
+
// sidebar.tsx and top-nav.tsx are "use client" and resolve it via
|
|
36746
|
+
// usePublicBooleanFlag for the WORDMARK, while (dashboard)/layout.tsx resolves
|
|
36747
|
+
// it server-side via getPublicBooleanFlagServer for the THEME (ENG-8858) — a
|
|
36748
|
+
// palette cannot wait for an async client fetch without flashing. Dropping
|
|
36749
|
+
// `public` would break the two client readers, not just the server one.
|
|
36750
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — every
|
|
36751
|
+
// reader evaluates inside the active-org cookie's scope, which is exactly the
|
|
36752
|
+
// org whose brand should be shown.
|
|
36746
36753
|
public: true
|
|
36747
36754
|
},
|
|
36748
36755
|
{
|
|
@@ -43,8 +43,8 @@ import {
|
|
|
43
43
|
writeDirectChatSessionState,
|
|
44
44
|
writeEgressAllowlist,
|
|
45
45
|
writePersistentClaudeWrapper
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-EUXCRRZU.js";
|
|
47
|
+
import "./chunk-V5MUX3GI.js";
|
|
48
48
|
import "./chunk-XWVM4KPK.js";
|
|
49
49
|
export {
|
|
50
50
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -92,4 +92,4 @@ export {
|
|
|
92
92
|
writeEgressAllowlist,
|
|
93
93
|
writePersistentClaudeWrapper
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=persistent-session-
|
|
95
|
+
//# sourceMappingURL=persistent-session-DVZESZDD.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-EUXCRRZU.js";
|
|
4
|
+
import "./chunk-V5MUX3GI.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -727,4 +727,4 @@ export {
|
|
|
727
727
|
readAndResetSlackReplyBindingClassifications,
|
|
728
728
|
readAndResetSlackReplyTargetClassifications
|
|
729
729
|
};
|
|
730
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
730
|
+
//# sourceMappingURL=responsiveness-probe-Q7SVASQS.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-V5MUX3GI.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-auth-dead.ts
|
|
6
6
|
import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
|
|
@@ -203,4 +203,4 @@ export {
|
|
|
203
203
|
decideSessionAuthState,
|
|
204
204
|
probeSessionAuth
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=session-auth-dead-
|
|
206
|
+
//# sourceMappingURL=session-auth-dead-RV3Z64TM.js.map
|