@integrity-labs/agt-cli 0.28.805 → 0.28.807
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-DHOVIXR5.js → chunk-GIV6ORI3.js} +17 -2
- package/dist/{chunk-DHOVIXR5.js.map → chunk-GIV6ORI3.js.map} +1 -1
- package/dist/{chunk-YNSVQMSD.js → chunk-SHQCTBFE.js} +59 -6
- package/dist/{chunk-YNSVQMSD.js.map → chunk-SHQCTBFE.js.map} +1 -1
- package/dist/{chunk-2FL6V4E5.js → chunk-VK35F6O7.js} +53 -1
- package/dist/chunk-VK35F6O7.js.map +1 -0
- package/dist/{claude-pair-runtime-WS3IVDDE.js → claude-pair-runtime-XZLX2PEL.js} +2 -2
- package/dist/lib/manager-worker.js +54 -13
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +52 -0
- package/dist/mcp/index.js +110 -1
- package/dist/mcp/origami.js +52 -0
- package/dist/mcp/slack-channel.js +52 -0
- package/dist/mcp/telegram-channel.js +52 -0
- package/dist/{persistent-session-PV4GPHG3.js → persistent-session-LEICQMWY.js} +3 -3
- package/dist/{responsiveness-probe-X3AW5TGA.js → responsiveness-probe-WEXP254C.js} +3 -3
- package/dist/{session-auth-dead-W6K5VEU7.js → session-auth-dead-AROKHZET.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-2FL6V4E5.js.map +0 -1
- /package/dist/{claude-pair-runtime-WS3IVDDE.js.map → claude-pair-runtime-XZLX2PEL.js.map} +0 -0
- /package/dist/{persistent-session-PV4GPHG3.js.map → persistent-session-LEICQMWY.js.map} +0 -0
- /package/dist/{responsiveness-probe-X3AW5TGA.js.map → responsiveness-probe-WEXP254C.js.map} +0 -0
- /package/dist/{session-auth-dead-W6K5VEU7.js.map → session-auth-dead-AROKHZET.js.map} +0 -0
|
@@ -36899,6 +36899,38 @@ var FLAG_REGISTRY = [
|
|
|
36899
36899
|
// envVar — this is a net-new control with no pre-flags env gate to migrate.
|
|
36900
36900
|
defaultValue: false
|
|
36901
36901
|
},
|
|
36902
|
+
{
|
|
36903
|
+
key: "skill-dreaming-support-intake",
|
|
36904
|
+
description: "Route skill dreaming's GLOBAL-scope proposals into Integrity Labs' own support-intake Linear workspace (ENG-9926). 42% of dreaming output targets a global skill no product surface can change, so those drafts can only ever become an agent-scoped fork that never reaches the thing it improves \u2014 the improvement is therefore ALSO filed as a support-intake issue, deduped per target skill with one Linear customer need per requesting org. Boolean gate; ships dark \u2014 when off nothing is filed and the fork behaviour is exactly today's.",
|
|
36905
|
+
flagType: "boolean",
|
|
36906
|
+
// Arming this starts exporting customer-derived text to a third-party tracker, so it
|
|
36907
|
+
// takes the ADR-0022 §4 explicit-confirmation step rather than a single unguarded
|
|
36908
|
+
// write — matching every comparable export gate in this file
|
|
36909
|
+
// (`org-email-domain-derivation`, `kanban-push-status`,
|
|
36910
|
+
// `augmented-support-auto-provision`, `email-guard-enforce-enabled`).
|
|
36911
|
+
// (CodeRabbit, PR #5519: the first cut documented the risk in the comment below and
|
|
36912
|
+
// then omitted the marker that acts on it.)
|
|
36913
|
+
sensitive: true,
|
|
36914
|
+
// THIS GATES A DATA CROSSING, NOT A COST. Read that before arming it.
|
|
36915
|
+
//
|
|
36916
|
+
// Everything skill dreaming does today stays inside the control plane: it reads
|
|
36917
|
+
// `agent_memories` and writes a `skill_definitions` row in the same Postgres, same
|
|
36918
|
+
// org, same RLS. This flag is what sends LLM-written rationale, confidence, and the
|
|
36919
|
+
// verbatim NAMES of the memories that motivated a proposal OUT to Linear — and
|
|
36920
|
+
// `feature-request-intake.ts` already calls Linear "the third-party tracker" where it
|
|
36921
|
+
// refuses to export a requester's contact details there. Via
|
|
36922
|
+
// linkFeatureRequestCustomerNeed it also sends the org's verified email domains.
|
|
36923
|
+
//
|
|
36924
|
+
// That is strictly more than ADR-0052 §6 gated for PostHog, and ENG-8247 is the
|
|
36925
|
+
// precedent for why a credential must not BE the gate: holding a support-intake key
|
|
36926
|
+
// is not the same as being cleared to send customer-derived text to a vendor's
|
|
36927
|
+
// tracker. Hence a separate flag rather than leaning on isFeatureIntakeConfigured.
|
|
36928
|
+
//
|
|
36929
|
+
// Declared safe value is `false` (nothing filed). Fail-safe direction: a flag-DB read
|
|
36930
|
+
// error must never start exporting on its own. No envVar — net-new control with no
|
|
36931
|
+
// pre-flags env gate to migrate (ADR-0022).
|
|
36932
|
+
defaultValue: false
|
|
36933
|
+
},
|
|
36902
36934
|
{
|
|
36903
36935
|
key: "skill-draft-review-notify",
|
|
36904
36936
|
description: "Pending skill-draft review nudge (ENG-6505): when a skill lands as a status=draft awaiting operator review, send a low-severity informational notification to the right reviewer(s) by scope \u2014 agent-scoped \u2192 the agent's manager (reports_to_person), falling back to team owners/admins; team-scoped \u2192 team owners/admins; org-scoped \u2192 org owners/admins \u2014 with a deep link to the Pending Skills card. Distinct from (and never doubles up on) the HIGH+ SkillSpector security alert. Covers both the agent-authored (ENG-4589) and skill-dreaming (ENG-6500) draft paths. Boolean gate; ships dark \u2014 when off no nudge is sent, so the steady state until an org is armed is silence.",
|
|
@@ -37247,6 +37279,26 @@ var FLAG_REGISTRY = [
|
|
|
37247
37279
|
// env var is retired.
|
|
37248
37280
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37249
37281
|
},
|
|
37282
|
+
{
|
|
37283
|
+
key: "slack-manifest-remediate",
|
|
37284
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
37285
|
+
flagType: "boolean",
|
|
37286
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37287
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37288
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37289
|
+
// customer's Slack app.
|
|
37290
|
+
defaultValue: false,
|
|
37291
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37292
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37293
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37294
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37295
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37296
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37297
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37298
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37299
|
+
// unguarded write away.
|
|
37300
|
+
sensitive: true
|
|
37301
|
+
},
|
|
37250
37302
|
{
|
|
37251
37303
|
key: "integration-reauth-reminders",
|
|
37252
37304
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
package/dist/mcp/index.js
CHANGED
|
@@ -37099,7 +37099,7 @@ function renderKanbanList(items, nowMs = Date.now()) {
|
|
|
37099
37099
|
return lines.join("\n");
|
|
37100
37100
|
}
|
|
37101
37101
|
var BLOCKED_ON_ME_SECTION_HEADING = "You are blocking these (another agent has stopped)";
|
|
37102
|
-
var BLOCKED_ON_ME_SECTION_NOTE = "_Another agent has PARKED its own work until you act. These are not your cards and not pullable work \u2014 you cannot move, note or complete them, and they do not count toward your in-progress load. Do the thing named, then
|
|
37102
|
+
var BLOCKED_ON_ME_SECTION_NOTE = "_Another agent has PARKED its own work until you act. These are not your cards and not pullable work \u2014 you cannot move, note or complete them, and they do not count toward your in-progress load. Do the thing named, then answer with `kanban_respond` (card_id + your answer) \u2014 that delivers it ON the parked card and un-parks it. Do NOT open a second card to carry the answer._";
|
|
37103
37103
|
var HUMAN_ASSIGNED_SECTION_HEADING = "Assigned to a person (not yours to action)";
|
|
37104
37104
|
var HUMAN_ASSIGNED_SECTION_NOTE = "_These belong to a person, not to you. You cannot move, note or complete them \u2014 every kanban write is refused. If the work is finished (or was never really theirs), use `kanban_recall` to pull the card back onto your board, then close it as normal._";
|
|
37105
37105
|
|
|
@@ -37824,6 +37824,27 @@ function formatKanbanLogResult(label, data, match = {}) {
|
|
|
37824
37824
|
};
|
|
37825
37825
|
}
|
|
37826
37826
|
|
|
37827
|
+
// src/kanban-respond-outcome.ts
|
|
37828
|
+
function describeKanbanRespondOutcome(data) {
|
|
37829
|
+
if (data.ok && data.delivered !== false) {
|
|
37830
|
+
return "Answer delivered. Their card is un-parked and back on their board \u2014 they will pick it up from here, so it is off your plate.";
|
|
37831
|
+
}
|
|
37832
|
+
if (data.reason === "recorded_undelivered" || data.ok && data.delivered === false) {
|
|
37833
|
+
return "Your answer was recorded and the card un-parked, but delivery to that agent could not be confirmed \u2014 tell them directly as well so it is not lost.";
|
|
37834
|
+
}
|
|
37835
|
+
const refusal = REFUSAL_MESSAGES[data.reason ?? ""];
|
|
37836
|
+
if (refusal) return refusal(data);
|
|
37837
|
+
return data.error ?? "Could not send your answer.";
|
|
37838
|
+
}
|
|
37839
|
+
var REFUSAL_MESSAGES = {
|
|
37840
|
+
not_found: () => 'No card is parked on you with that id. Re-read kanban_list \u2014 only cards under "You are blocking these" can be answered here, and the id must be copied exactly.',
|
|
37841
|
+
self_block: () => "That card is parked on YOU by you \u2014 a self-block, almost always a mistyped code_name when it was parked. Fix it on your own card rather than answering it.",
|
|
37842
|
+
already_responded: () => "Someone already answered that card, so it has resumed. Nothing more to do.",
|
|
37843
|
+
not_actionable: (d) => `That card is no longer parked (status: ${d.status ?? "unknown"}), so there is nothing to un-park. The agent has moved on.`,
|
|
37844
|
+
recorded_not_unparked: () => "Your answer was recorded but the card could not be un-parked, so the agent is still blocked \u2014 tell them directly and check the card."
|
|
37845
|
+
};
|
|
37846
|
+
var HANDLED_REFUSAL_REASONS = Object.keys(REFUSAL_MESSAGES).sort();
|
|
37847
|
+
|
|
37827
37848
|
// src/kanban-update.ts
|
|
37828
37849
|
function buildKanbanUpdateItem(id, fields) {
|
|
37829
37850
|
const item = { id };
|
|
@@ -43983,6 +44004,38 @@ var FLAG_REGISTRY = [
|
|
|
43983
44004
|
// envVar — this is a net-new control with no pre-flags env gate to migrate.
|
|
43984
44005
|
defaultValue: false
|
|
43985
44006
|
},
|
|
44007
|
+
{
|
|
44008
|
+
key: "skill-dreaming-support-intake",
|
|
44009
|
+
description: "Route skill dreaming's GLOBAL-scope proposals into Integrity Labs' own support-intake Linear workspace (ENG-9926). 42% of dreaming output targets a global skill no product surface can change, so those drafts can only ever become an agent-scoped fork that never reaches the thing it improves \u2014 the improvement is therefore ALSO filed as a support-intake issue, deduped per target skill with one Linear customer need per requesting org. Boolean gate; ships dark \u2014 when off nothing is filed and the fork behaviour is exactly today's.",
|
|
44010
|
+
flagType: "boolean",
|
|
44011
|
+
// Arming this starts exporting customer-derived text to a third-party tracker, so it
|
|
44012
|
+
// takes the ADR-0022 §4 explicit-confirmation step rather than a single unguarded
|
|
44013
|
+
// write — matching every comparable export gate in this file
|
|
44014
|
+
// (`org-email-domain-derivation`, `kanban-push-status`,
|
|
44015
|
+
// `augmented-support-auto-provision`, `email-guard-enforce-enabled`).
|
|
44016
|
+
// (CodeRabbit, PR #5519: the first cut documented the risk in the comment below and
|
|
44017
|
+
// then omitted the marker that acts on it.)
|
|
44018
|
+
sensitive: true,
|
|
44019
|
+
// THIS GATES A DATA CROSSING, NOT A COST. Read that before arming it.
|
|
44020
|
+
//
|
|
44021
|
+
// Everything skill dreaming does today stays inside the control plane: it reads
|
|
44022
|
+
// `agent_memories` and writes a `skill_definitions` row in the same Postgres, same
|
|
44023
|
+
// org, same RLS. This flag is what sends LLM-written rationale, confidence, and the
|
|
44024
|
+
// verbatim NAMES of the memories that motivated a proposal OUT to Linear — and
|
|
44025
|
+
// `feature-request-intake.ts` already calls Linear "the third-party tracker" where it
|
|
44026
|
+
// refuses to export a requester's contact details there. Via
|
|
44027
|
+
// linkFeatureRequestCustomerNeed it also sends the org's verified email domains.
|
|
44028
|
+
//
|
|
44029
|
+
// That is strictly more than ADR-0052 §6 gated for PostHog, and ENG-8247 is the
|
|
44030
|
+
// precedent for why a credential must not BE the gate: holding a support-intake key
|
|
44031
|
+
// is not the same as being cleared to send customer-derived text to a vendor's
|
|
44032
|
+
// tracker. Hence a separate flag rather than leaning on isFeatureIntakeConfigured.
|
|
44033
|
+
//
|
|
44034
|
+
// Declared safe value is `false` (nothing filed). Fail-safe direction: a flag-DB read
|
|
44035
|
+
// error must never start exporting on its own. No envVar — net-new control with no
|
|
44036
|
+
// pre-flags env gate to migrate (ADR-0022).
|
|
44037
|
+
defaultValue: false
|
|
44038
|
+
},
|
|
43986
44039
|
{
|
|
43987
44040
|
key: "skill-draft-review-notify",
|
|
43988
44041
|
description: "Pending skill-draft review nudge (ENG-6505): when a skill lands as a status=draft awaiting operator review, send a low-severity informational notification to the right reviewer(s) by scope \u2014 agent-scoped \u2192 the agent's manager (reports_to_person), falling back to team owners/admins; team-scoped \u2192 team owners/admins; org-scoped \u2192 org owners/admins \u2014 with a deep link to the Pending Skills card. Distinct from (and never doubles up on) the HIGH+ SkillSpector security alert. Covers both the agent-authored (ENG-4589) and skill-dreaming (ENG-6500) draft paths. Boolean gate; ships dark \u2014 when off no nudge is sent, so the steady state until an org is armed is silence.",
|
|
@@ -44331,6 +44384,26 @@ var FLAG_REGISTRY = [
|
|
|
44331
44384
|
// env var is retired.
|
|
44332
44385
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
44333
44386
|
},
|
|
44387
|
+
{
|
|
44388
|
+
key: "slack-manifest-remediate",
|
|
44389
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
44390
|
+
flagType: "boolean",
|
|
44391
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
44392
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
44393
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
44394
|
+
// customer's Slack app.
|
|
44395
|
+
defaultValue: false,
|
|
44396
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
44397
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
44398
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
44399
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
44400
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
44401
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
44402
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
44403
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
44404
|
+
// unguarded write away.
|
|
44405
|
+
sensitive: true
|
|
44406
|
+
},
|
|
44334
44407
|
{
|
|
44335
44408
|
key: "integration-reauth-reminders",
|
|
44336
44409
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -45936,6 +46009,37 @@ server.tool(
|
|
|
45936
46009
|
}
|
|
45937
46010
|
}
|
|
45938
46011
|
);
|
|
46012
|
+
server.tool(
|
|
46013
|
+
"kanban_respond",
|
|
46014
|
+
'Answer a card ANOTHER agent parked on you, and un-park it so they can resume. Use this for any card in the "You are blocking these" section of kanban_list: that agent has STOPPED until you act, and this is the only way your answer reaches the card they are blocked on. Do the thing they asked, then send the answer here. Do NOT create a second card to carry it - they would end up with the parked card AND a separate one holding the thing that unblocks it, joined by nothing. You can only respond to a card that names YOU in its wait.',
|
|
46015
|
+
{
|
|
46016
|
+
card_id: external_exports.string().describe(
|
|
46017
|
+
'The card id, exactly as kanban_list shows it under "You are blocking these".'
|
|
46018
|
+
),
|
|
46019
|
+
text: external_exports.string().optional().describe(
|
|
46020
|
+
"Your answer, self-contained. This is what the blocked agent resumes on, so give it the ANSWER rather than a pointer to one - it cannot see your board, your session or your files. Required unless you are picking a choice with `value`."
|
|
46021
|
+
),
|
|
46022
|
+
value: external_exports.string().optional().describe("Machine value of a choice, when the card offered options. Otherwise omit."),
|
|
46023
|
+
label: external_exports.string().optional().describe("Human label for that choice, when it differs from the value.")
|
|
46024
|
+
},
|
|
46025
|
+
async (params) => {
|
|
46026
|
+
let data;
|
|
46027
|
+
try {
|
|
46028
|
+
data = await apiPost("/host/kanban/respond", {
|
|
46029
|
+
agent_id: AGT_AGENT_ID,
|
|
46030
|
+
card_id: params.card_id,
|
|
46031
|
+
...params.text ? { text: params.text } : {},
|
|
46032
|
+
...params.value ? { value: params.value } : {},
|
|
46033
|
+
...params.label ? { label: params.label } : {}
|
|
46034
|
+
});
|
|
46035
|
+
} catch (err) {
|
|
46036
|
+
return {
|
|
46037
|
+
content: [{ type: "text", text: `Could not send your answer: ${err.message}` }]
|
|
46038
|
+
};
|
|
46039
|
+
}
|
|
46040
|
+
return { content: [{ type: "text", text: describeKanbanRespondOutcome(data) }] };
|
|
46041
|
+
}
|
|
46042
|
+
);
|
|
45939
46043
|
server.tool(
|
|
45940
46044
|
"kanban_recall",
|
|
45941
46045
|
'Pull a card you assigned to a HUMAN teammate back onto your own board. Use this when a card shows under "Assigned to a person" in kanban_list and you need to act on it - typically because the person finished the work (or it is no longer needed) and the card has to be closed. While a card is assigned to a person, every kanban write to it is refused; recall makes it yours again so kanban_move / kanban_done / kanban_log work. Recall does NOT complete the card - after recalling, close it yourself with kanban_done and a result. You can only recall a card you assigned.',
|
|
@@ -47816,6 +47920,11 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
47816
47920
|
// ENG-8281: the inverse of assign_kanban_to_human — take a human-assigned
|
|
47817
47921
|
// card back so the agent can finally close it.
|
|
47818
47922
|
"kanban_recall",
|
|
47923
|
+
// ENG-9838: the UNBLOCKING direction of waiting_on_agent. Parking already
|
|
47924
|
+
// notified the target; the answer had no route back, so every agent-to-agent
|
|
47925
|
+
// park needed a second, unlinked card carrying the answer beside the card it
|
|
47926
|
+
// was meant to unblock.
|
|
47927
|
+
"kanban_respond",
|
|
47819
47928
|
// ENG-9050: the return path for delegated work.
|
|
47820
47929
|
"kanban_reopen",
|
|
47821
47930
|
// ENG-9375: the READ path over a teammate's board (counts only).
|
package/dist/mcp/origami.js
CHANGED
|
@@ -42623,6 +42623,38 @@ var FLAG_REGISTRY = [
|
|
|
42623
42623
|
// envVar — this is a net-new control with no pre-flags env gate to migrate.
|
|
42624
42624
|
defaultValue: false
|
|
42625
42625
|
},
|
|
42626
|
+
{
|
|
42627
|
+
key: "skill-dreaming-support-intake",
|
|
42628
|
+
description: "Route skill dreaming's GLOBAL-scope proposals into Integrity Labs' own support-intake Linear workspace (ENG-9926). 42% of dreaming output targets a global skill no product surface can change, so those drafts can only ever become an agent-scoped fork that never reaches the thing it improves \u2014 the improvement is therefore ALSO filed as a support-intake issue, deduped per target skill with one Linear customer need per requesting org. Boolean gate; ships dark \u2014 when off nothing is filed and the fork behaviour is exactly today's.",
|
|
42629
|
+
flagType: "boolean",
|
|
42630
|
+
// Arming this starts exporting customer-derived text to a third-party tracker, so it
|
|
42631
|
+
// takes the ADR-0022 §4 explicit-confirmation step rather than a single unguarded
|
|
42632
|
+
// write — matching every comparable export gate in this file
|
|
42633
|
+
// (`org-email-domain-derivation`, `kanban-push-status`,
|
|
42634
|
+
// `augmented-support-auto-provision`, `email-guard-enforce-enabled`).
|
|
42635
|
+
// (CodeRabbit, PR #5519: the first cut documented the risk in the comment below and
|
|
42636
|
+
// then omitted the marker that acts on it.)
|
|
42637
|
+
sensitive: true,
|
|
42638
|
+
// THIS GATES A DATA CROSSING, NOT A COST. Read that before arming it.
|
|
42639
|
+
//
|
|
42640
|
+
// Everything skill dreaming does today stays inside the control plane: it reads
|
|
42641
|
+
// `agent_memories` and writes a `skill_definitions` row in the same Postgres, same
|
|
42642
|
+
// org, same RLS. This flag is what sends LLM-written rationale, confidence, and the
|
|
42643
|
+
// verbatim NAMES of the memories that motivated a proposal OUT to Linear — and
|
|
42644
|
+
// `feature-request-intake.ts` already calls Linear "the third-party tracker" where it
|
|
42645
|
+
// refuses to export a requester's contact details there. Via
|
|
42646
|
+
// linkFeatureRequestCustomerNeed it also sends the org's verified email domains.
|
|
42647
|
+
//
|
|
42648
|
+
// That is strictly more than ADR-0052 §6 gated for PostHog, and ENG-8247 is the
|
|
42649
|
+
// precedent for why a credential must not BE the gate: holding a support-intake key
|
|
42650
|
+
// is not the same as being cleared to send customer-derived text to a vendor's
|
|
42651
|
+
// tracker. Hence a separate flag rather than leaning on isFeatureIntakeConfigured.
|
|
42652
|
+
//
|
|
42653
|
+
// Declared safe value is `false` (nothing filed). Fail-safe direction: a flag-DB read
|
|
42654
|
+
// error must never start exporting on its own. No envVar — net-new control with no
|
|
42655
|
+
// pre-flags env gate to migrate (ADR-0022).
|
|
42656
|
+
defaultValue: false
|
|
42657
|
+
},
|
|
42626
42658
|
{
|
|
42627
42659
|
key: "skill-draft-review-notify",
|
|
42628
42660
|
description: "Pending skill-draft review nudge (ENG-6505): when a skill lands as a status=draft awaiting operator review, send a low-severity informational notification to the right reviewer(s) by scope \u2014 agent-scoped \u2192 the agent's manager (reports_to_person), falling back to team owners/admins; team-scoped \u2192 team owners/admins; org-scoped \u2192 org owners/admins \u2014 with a deep link to the Pending Skills card. Distinct from (and never doubles up on) the HIGH+ SkillSpector security alert. Covers both the agent-authored (ENG-4589) and skill-dreaming (ENG-6500) draft paths. Boolean gate; ships dark \u2014 when off no nudge is sent, so the steady state until an org is armed is silence.",
|
|
@@ -42971,6 +43003,26 @@ var FLAG_REGISTRY = [
|
|
|
42971
43003
|
// env var is retired.
|
|
42972
43004
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
42973
43005
|
},
|
|
43006
|
+
{
|
|
43007
|
+
key: "slack-manifest-remediate",
|
|
43008
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
43009
|
+
flagType: "boolean",
|
|
43010
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
43011
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
43012
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
43013
|
+
// customer's Slack app.
|
|
43014
|
+
defaultValue: false,
|
|
43015
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
43016
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
43017
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
43018
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
43019
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
43020
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
43021
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
43022
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
43023
|
+
// unguarded write away.
|
|
43024
|
+
sensitive: true
|
|
43025
|
+
},
|
|
42974
43026
|
{
|
|
42975
43027
|
key: "integration-reauth-reminders",
|
|
42976
43028
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -37146,6 +37146,38 @@ var FLAG_REGISTRY = [
|
|
|
37146
37146
|
// envVar — this is a net-new control with no pre-flags env gate to migrate.
|
|
37147
37147
|
defaultValue: false
|
|
37148
37148
|
},
|
|
37149
|
+
{
|
|
37150
|
+
key: "skill-dreaming-support-intake",
|
|
37151
|
+
description: "Route skill dreaming's GLOBAL-scope proposals into Integrity Labs' own support-intake Linear workspace (ENG-9926). 42% of dreaming output targets a global skill no product surface can change, so those drafts can only ever become an agent-scoped fork that never reaches the thing it improves \u2014 the improvement is therefore ALSO filed as a support-intake issue, deduped per target skill with one Linear customer need per requesting org. Boolean gate; ships dark \u2014 when off nothing is filed and the fork behaviour is exactly today's.",
|
|
37152
|
+
flagType: "boolean",
|
|
37153
|
+
// Arming this starts exporting customer-derived text to a third-party tracker, so it
|
|
37154
|
+
// takes the ADR-0022 §4 explicit-confirmation step rather than a single unguarded
|
|
37155
|
+
// write — matching every comparable export gate in this file
|
|
37156
|
+
// (`org-email-domain-derivation`, `kanban-push-status`,
|
|
37157
|
+
// `augmented-support-auto-provision`, `email-guard-enforce-enabled`).
|
|
37158
|
+
// (CodeRabbit, PR #5519: the first cut documented the risk in the comment below and
|
|
37159
|
+
// then omitted the marker that acts on it.)
|
|
37160
|
+
sensitive: true,
|
|
37161
|
+
// THIS GATES A DATA CROSSING, NOT A COST. Read that before arming it.
|
|
37162
|
+
//
|
|
37163
|
+
// Everything skill dreaming does today stays inside the control plane: it reads
|
|
37164
|
+
// `agent_memories` and writes a `skill_definitions` row in the same Postgres, same
|
|
37165
|
+
// org, same RLS. This flag is what sends LLM-written rationale, confidence, and the
|
|
37166
|
+
// verbatim NAMES of the memories that motivated a proposal OUT to Linear — and
|
|
37167
|
+
// `feature-request-intake.ts` already calls Linear "the third-party tracker" where it
|
|
37168
|
+
// refuses to export a requester's contact details there. Via
|
|
37169
|
+
// linkFeatureRequestCustomerNeed it also sends the org's verified email domains.
|
|
37170
|
+
//
|
|
37171
|
+
// That is strictly more than ADR-0052 §6 gated for PostHog, and ENG-8247 is the
|
|
37172
|
+
// precedent for why a credential must not BE the gate: holding a support-intake key
|
|
37173
|
+
// is not the same as being cleared to send customer-derived text to a vendor's
|
|
37174
|
+
// tracker. Hence a separate flag rather than leaning on isFeatureIntakeConfigured.
|
|
37175
|
+
//
|
|
37176
|
+
// Declared safe value is `false` (nothing filed). Fail-safe direction: a flag-DB read
|
|
37177
|
+
// error must never start exporting on its own. No envVar — net-new control with no
|
|
37178
|
+
// pre-flags env gate to migrate (ADR-0022).
|
|
37179
|
+
defaultValue: false
|
|
37180
|
+
},
|
|
37149
37181
|
{
|
|
37150
37182
|
key: "skill-draft-review-notify",
|
|
37151
37183
|
description: "Pending skill-draft review nudge (ENG-6505): when a skill lands as a status=draft awaiting operator review, send a low-severity informational notification to the right reviewer(s) by scope \u2014 agent-scoped \u2192 the agent's manager (reports_to_person), falling back to team owners/admins; team-scoped \u2192 team owners/admins; org-scoped \u2192 org owners/admins \u2014 with a deep link to the Pending Skills card. Distinct from (and never doubles up on) the HIGH+ SkillSpector security alert. Covers both the agent-authored (ENG-4589) and skill-dreaming (ENG-6500) draft paths. Boolean gate; ships dark \u2014 when off no nudge is sent, so the steady state until an org is armed is silence.",
|
|
@@ -37494,6 +37526,26 @@ var FLAG_REGISTRY = [
|
|
|
37494
37526
|
// env var is retired.
|
|
37495
37527
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37496
37528
|
},
|
|
37529
|
+
{
|
|
37530
|
+
key: "slack-manifest-remediate",
|
|
37531
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
37532
|
+
flagType: "boolean",
|
|
37533
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37534
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37535
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37536
|
+
// customer's Slack app.
|
|
37537
|
+
defaultValue: false,
|
|
37538
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37539
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37540
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37541
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37542
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37543
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37544
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37545
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37546
|
+
// unguarded write away.
|
|
37547
|
+
sensitive: true
|
|
37548
|
+
},
|
|
37497
37549
|
{
|
|
37498
37550
|
key: "integration-reauth-reminders",
|
|
37499
37551
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -37304,6 +37304,38 @@ var FLAG_REGISTRY = [
|
|
|
37304
37304
|
// envVar — this is a net-new control with no pre-flags env gate to migrate.
|
|
37305
37305
|
defaultValue: false
|
|
37306
37306
|
},
|
|
37307
|
+
{
|
|
37308
|
+
key: "skill-dreaming-support-intake",
|
|
37309
|
+
description: "Route skill dreaming's GLOBAL-scope proposals into Integrity Labs' own support-intake Linear workspace (ENG-9926). 42% of dreaming output targets a global skill no product surface can change, so those drafts can only ever become an agent-scoped fork that never reaches the thing it improves \u2014 the improvement is therefore ALSO filed as a support-intake issue, deduped per target skill with one Linear customer need per requesting org. Boolean gate; ships dark \u2014 when off nothing is filed and the fork behaviour is exactly today's.",
|
|
37310
|
+
flagType: "boolean",
|
|
37311
|
+
// Arming this starts exporting customer-derived text to a third-party tracker, so it
|
|
37312
|
+
// takes the ADR-0022 §4 explicit-confirmation step rather than a single unguarded
|
|
37313
|
+
// write — matching every comparable export gate in this file
|
|
37314
|
+
// (`org-email-domain-derivation`, `kanban-push-status`,
|
|
37315
|
+
// `augmented-support-auto-provision`, `email-guard-enforce-enabled`).
|
|
37316
|
+
// (CodeRabbit, PR #5519: the first cut documented the risk in the comment below and
|
|
37317
|
+
// then omitted the marker that acts on it.)
|
|
37318
|
+
sensitive: true,
|
|
37319
|
+
// THIS GATES A DATA CROSSING, NOT A COST. Read that before arming it.
|
|
37320
|
+
//
|
|
37321
|
+
// Everything skill dreaming does today stays inside the control plane: it reads
|
|
37322
|
+
// `agent_memories` and writes a `skill_definitions` row in the same Postgres, same
|
|
37323
|
+
// org, same RLS. This flag is what sends LLM-written rationale, confidence, and the
|
|
37324
|
+
// verbatim NAMES of the memories that motivated a proposal OUT to Linear — and
|
|
37325
|
+
// `feature-request-intake.ts` already calls Linear "the third-party tracker" where it
|
|
37326
|
+
// refuses to export a requester's contact details there. Via
|
|
37327
|
+
// linkFeatureRequestCustomerNeed it also sends the org's verified email domains.
|
|
37328
|
+
//
|
|
37329
|
+
// That is strictly more than ADR-0052 §6 gated for PostHog, and ENG-8247 is the
|
|
37330
|
+
// precedent for why a credential must not BE the gate: holding a support-intake key
|
|
37331
|
+
// is not the same as being cleared to send customer-derived text to a vendor's
|
|
37332
|
+
// tracker. Hence a separate flag rather than leaning on isFeatureIntakeConfigured.
|
|
37333
|
+
//
|
|
37334
|
+
// Declared safe value is `false` (nothing filed). Fail-safe direction: a flag-DB read
|
|
37335
|
+
// error must never start exporting on its own. No envVar — net-new control with no
|
|
37336
|
+
// pre-flags env gate to migrate (ADR-0022).
|
|
37337
|
+
defaultValue: false
|
|
37338
|
+
},
|
|
37307
37339
|
{
|
|
37308
37340
|
key: "skill-draft-review-notify",
|
|
37309
37341
|
description: "Pending skill-draft review nudge (ENG-6505): when a skill lands as a status=draft awaiting operator review, send a low-severity informational notification to the right reviewer(s) by scope \u2014 agent-scoped \u2192 the agent's manager (reports_to_person), falling back to team owners/admins; team-scoped \u2192 team owners/admins; org-scoped \u2192 org owners/admins \u2014 with a deep link to the Pending Skills card. Distinct from (and never doubles up on) the HIGH+ SkillSpector security alert. Covers both the agent-authored (ENG-4589) and skill-dreaming (ENG-6500) draft paths. Boolean gate; ships dark \u2014 when off no nudge is sent, so the steady state until an org is armed is silence.",
|
|
@@ -37652,6 +37684,26 @@ var FLAG_REGISTRY = [
|
|
|
37652
37684
|
// env var is retired.
|
|
37653
37685
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37654
37686
|
},
|
|
37687
|
+
{
|
|
37688
|
+
key: "slack-manifest-remediate",
|
|
37689
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
37690
|
+
flagType: "boolean",
|
|
37691
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37692
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37693
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37694
|
+
// customer's Slack app.
|
|
37695
|
+
defaultValue: false,
|
|
37696
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37697
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37698
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37699
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37700
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37701
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37702
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37703
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37704
|
+
// unguarded write away.
|
|
37705
|
+
sensitive: true
|
|
37706
|
+
},
|
|
37655
37707
|
{
|
|
37656
37708
|
key: "integration-reauth-reminders",
|
|
37657
37709
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -49,8 +49,8 @@ import {
|
|
|
49
49
|
writeDirectChatSessionState,
|
|
50
50
|
writeEgressAllowlist,
|
|
51
51
|
writePersistentClaudeWrapper
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import "./chunk-
|
|
52
|
+
} from "./chunk-GIV6ORI3.js";
|
|
53
|
+
import "./chunk-VK35F6O7.js";
|
|
54
54
|
import "./chunk-XWVM4KPK.js";
|
|
55
55
|
export {
|
|
56
56
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -104,4 +104,4 @@ export {
|
|
|
104
104
|
writeEgressAllowlist,
|
|
105
105
|
writePersistentClaudeWrapper
|
|
106
106
|
};
|
|
107
|
-
//# sourceMappingURL=persistent-session-
|
|
107
|
+
//# sourceMappingURL=persistent-session-LEICQMWY.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-GIV6ORI3.js";
|
|
4
|
+
import "./chunk-VK35F6O7.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -745,4 +745,4 @@ export {
|
|
|
745
745
|
readAndResetSlackReplyBindingClassifications,
|
|
746
746
|
readAndResetSlackReplyTargetClassifications
|
|
747
747
|
};
|
|
748
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
748
|
+
//# sourceMappingURL=responsiveness-probe-WEXP254C.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VK35F6O7.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-AROKHZET.js.map
|