@integrity-labs/agt-cli 0.28.808 → 0.28.810
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-LLR42RME.js → chunk-2D242AQK.js} +4 -4
- package/dist/{chunk-SWUBTUYM.js → chunk-GBSP65E7.js} +49 -10
- package/dist/chunk-GBSP65E7.js.map +1 -0
- package/dist/{chunk-TLPQULYH.js → chunk-SBRKT2AV.js} +2 -2
- package/dist/{claude-pair-runtime-FUT7SLRJ.js → claude-pair-runtime-WAXQINIW.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/direct-chat-channel.js +48 -9
- package/dist/mcp/index.js +17929 -17685
- package/dist/mcp/origami.js +48 -9
- package/dist/mcp/slack-channel.js +48 -9
- package/dist/mcp/telegram-channel.js +48 -9
- package/dist/{persistent-session-Q23JIYBR.js → persistent-session-LYJCGKH3.js} +3 -3
- package/dist/{responsiveness-probe-T2I27SCG.js → responsiveness-probe-XRSACVMN.js} +3 -3
- package/dist/{session-auth-dead-O7DBSJ3W.js → session-auth-dead-Y6MASYWN.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-SWUBTUYM.js.map +0 -1
- /package/dist/{chunk-LLR42RME.js.map → chunk-2D242AQK.js.map} +0 -0
- /package/dist/{chunk-TLPQULYH.js.map → chunk-SBRKT2AV.js.map} +0 -0
- /package/dist/{claude-pair-runtime-FUT7SLRJ.js.map → claude-pair-runtime-WAXQINIW.js.map} +0 -0
- /package/dist/{persistent-session-Q23JIYBR.js.map → persistent-session-LYJCGKH3.js.map} +0 -0
- /package/dist/{responsiveness-probe-T2I27SCG.js.map → responsiveness-probe-XRSACVMN.js.map} +0 -0
- /package/dist/{session-auth-dead-O7DBSJ3W.js.map → session-auth-dead-Y6MASYWN.js.map} +0 -0
package/dist/mcp/origami.js
CHANGED
|
@@ -39990,7 +39990,15 @@ var INTEGRATION_REGISTRY = [
|
|
|
39990
39990
|
// integration_rate_cards; this only declares the model + meter.
|
|
39991
39991
|
premium: {
|
|
39992
39992
|
pricing: "usage",
|
|
39993
|
-
|
|
39993
|
+
// THE OPT-IN AUTHORISES BOTH METERS, SO THE NOTE NAMES BOTH (ENG-9913).
|
|
39994
|
+
// This string is the point of sale — it renders in the add-integration
|
|
39995
|
+
// dialog an org admin reads before opting in — and it described only
|
|
39996
|
+
// `voice_session` while the same opt-in, and the same $50 pool, had also
|
|
39997
|
+
// covered Ninja Notes cloud transcription since ENG-9870. "Of audio"
|
|
39998
|
+
// rather than "of meeting" is load-bearing: the two capture sources post
|
|
39999
|
+
// independently, so an hour-long meeting on default settings spends two
|
|
40000
|
+
// audio-hours (ADR-0063 §2a).
|
|
40001
|
+
note: "Billed per minute of real-time voice conversation, and per hour of audio for Ninja Notes cloud transcription \u2014 both against the same monthly budget.",
|
|
39994
40002
|
meters: [
|
|
39995
40003
|
{ event_type: "voice_session", unit: "minute" },
|
|
39996
40004
|
// ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
|
|
@@ -40002,16 +40010,24 @@ var INTEGRATION_REGISTRY = [
|
|
|
40002
40010
|
// `audio_hour`, not `minute`. The vendor prices per hour and the sell
|
|
40003
40011
|
// price is per hour, so hours store exactly (50 minor) where minutes
|
|
40004
40012
|
// would be 0.8333 repeating; `integration_usage_events.units` is
|
|
40005
|
-
// `numeric`, so
|
|
40013
|
+
// `numeric`, so 30 minutes of audio records 0.5 units precisely. This
|
|
40006
40014
|
// is the answer to ENG-9773 §10.1's open question about whether hours
|
|
40007
40015
|
// convert to minutes or the vocabulary gains hours.
|
|
40008
40016
|
//
|
|
40009
|
-
//
|
|
40010
|
-
//
|
|
40011
|
-
//
|
|
40012
|
-
//
|
|
40013
|
-
//
|
|
40014
|
-
//
|
|
40017
|
+
// AN AUDIO-HOUR IS NOT A MEETING-HOUR (ENG-9913, Brad, 2026-09-03). The
|
|
40018
|
+
// Mac captures system audio and the microphone as two independent
|
|
40019
|
+
// pipelines that post separately, and both default on, so the ordinary
|
|
40020
|
+
// meeting records two units per wall-clock hour. That is deliberate: the
|
|
40021
|
+
// audio-hour is what we buy, since xAI bills on the duration uploaded.
|
|
40022
|
+
// Pricing per meeting-hour would have varied the markup with a capture
|
|
40023
|
+
// toggle and could only have been built on a client's assertion about
|
|
40024
|
+
// how many pipelines were live. See ADR-0063 §2a.
|
|
40025
|
+
//
|
|
40026
|
+
// THE CHOKEPOINT EXISTS NOW — `POST /notes/transcribe` (ENG-9913)
|
|
40027
|
+
// reserves against this meter before the vendor call, from the bytes it
|
|
40028
|
+
// received. The rate card still had to land first, in ENG-9870: a
|
|
40029
|
+
// billable event with no USD rate makes `evaluateUsageBudget` throw, and
|
|
40030
|
+
// on a SHARED pool that would break Voice Chat's budget check too.
|
|
40015
40031
|
{ event_type: "transcription", unit: "audio_hour" }
|
|
40016
40032
|
]
|
|
40017
40033
|
}
|
|
@@ -40908,7 +40924,18 @@ var INTEGRATION_REGISTRY = [
|
|
|
40908
40924
|
// premium surface — is the structurally right answer and the follow-up.
|
|
40909
40925
|
premium: {
|
|
40910
40926
|
pricing: "included",
|
|
40911
|
-
|
|
40927
|
+
// "THE ONE EXCEPTION" BECAME TWO (ENG-9913). Cloud transcription is the
|
|
40928
|
+
// second metered capability under this integration, and this sentence was
|
|
40929
|
+
// true only for as long as its flag stayed off — it would have become
|
|
40930
|
+
// false on arming, silently, in a consent dialog. Both exceptions are
|
|
40931
|
+
// written the same way, and both are still off until someone turns them
|
|
40932
|
+
// on, so the sentence is accurate before and after the rollout.
|
|
40933
|
+
//
|
|
40934
|
+
// "Per hour of AUDIO" is deliberate here too: the two capture sources post
|
|
40935
|
+
// independently, so an hour-long meeting on default settings spends two
|
|
40936
|
+
// audio-hours (ADR-0063 §2a). The Mac's own caption carries the fuller
|
|
40937
|
+
// explanation, at the point where the person choosing it can read it.
|
|
40938
|
+
note: "Notes are included in your plan. Transcription runs on your own Mac by default and no platform summariser runs, so nothing is metered per note \u2014 the agent turn that reads it is billed as agent-hours like any other. Two capabilities are turned on separately and billed when they are: live meeting advising, per minute the advisor is armed; and cloud transcription, per hour of audio."
|
|
40912
40939
|
}
|
|
40913
40940
|
},
|
|
40914
40941
|
{
|
|
@@ -43395,6 +43422,18 @@ var FLAG_REGISTRY = [
|
|
|
43395
43422
|
// agent-hours-billing-enabled.
|
|
43396
43423
|
sensitive: true
|
|
43397
43424
|
},
|
|
43425
|
+
{
|
|
43426
|
+
key: "cloud-speech-to-text",
|
|
43427
|
+
description: 'Cloud transcription in Ninja Notes (ENG-9913). When ON for an org, a person recording a meeting on the Mac may choose to have each capture window transcribed by xAI instead of on-device: the window is POSTed to /notes/transcribe, proxied to xAI with the platform key, metered as grok-voice/transcription per audio_hour, and the text comes back with no speaker labels. THIS IS OUR ROLLOUT GATE AND IT IS THE THIRD KEY, NOT THE FIRST. Three things must all be true before a window leaves the Mac: the org holds the grok-voice premium opt-in (authorisation, resolveCloudSttEntitlement), the user has elected it per-install (consent, CaptureSettings.cloudTranscriptionEnabled), and this flag is on (our own readiness). Without this flag the first two alone were sufficient, which is why it exists: resolveCloudSttEntitlement reports enabled for every org that ever bought Voice Chat, so the route would go live for all of them the moment it deployed. It is what finally lets the server emit `not_available` \u2014 CloudTranscriptionRefusal.notRolledOut has shipped since ENG-9869 carrying the sentence "Cloud transcription is not available for your organisation yet" with nothing able to produce it. Boolean gate; ships dark. OFF NEVER COSTS THE RECORDING. An org without the flag \u2014 or a flag read that fails \u2014 transcribes on-device exactly as before; the microphone still starts and the note is still transcribed and delivered. Same direction as live-meeting-advisor and for the same reason: the user pressed Record and a recording is what they are owed. It is also what makes rollback cheap, because flipping this off mid-flight degrades in-progress meetings to on-device rather than breaking them. Deliberately NO envVar. This is an org-scoped gate, and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing, the ENG-8303 class exactly. No `since`: the reader is the API route, not a host-side agt-cli consumer, so this does not depend on fleet convergence. The Mac client is a separate fleet that reports no version at all, which is precisely why the gate has to live server-side.',
|
|
43428
|
+
flagType: "boolean",
|
|
43429
|
+
defaultValue: false,
|
|
43430
|
+
// Turning it ON starts sending meeting audio — INCLUDING the other side of
|
|
43431
|
+
// the call, whose participants have not been asked — to a third-party
|
|
43432
|
+
// vendor, and arms a per-audio-hour meter against the org's shared
|
|
43433
|
+
// grok-voice budget. Either half alone would warrant the confirm ADR-0022
|
|
43434
|
+
// §4 reserves for deliberate, audited flips.
|
|
43435
|
+
sensitive: true
|
|
43436
|
+
},
|
|
43398
43437
|
{
|
|
43399
43438
|
key: "first-party-token-refusal",
|
|
43400
43439
|
description: "ENG-8972 AC4 / ADR-0076 decision 2 \u2014 whether `resolveUserId` (packages/api/src/middleware/auth.ts) REFUSES a bearer token carrying a first-party marker that is foreign to the host-exchange lane. SUPABASE_JWT_SECRET is symmetric and signs twelve distinct token families; the generic Bearer door has always admitted any of them that mints a uuid-shaped `sub`, so a token minted for one purpose authenticates as a user for every purpose. off = the capture never runs (no log, no refusal). shadow = record the population an enforcement flip would change, on BOTH admitting lanes (lane=gotrue, lane=sub-claim), and refuse nothing \u2014 this is exactly the behaviour compiled into prod today. enforce = return null with reason=foreign-first-party-marker, above the strategy split, so the token reaches neither GoTrue nor the sub-claim lane. DEFAULT IS `shadow`, NOT `off`, and the divergence is deliberate \u2014 the shadow lines have been live in prod since 68863974b, and they are the soak instrument. Defaulting to `off` would silently switch off the measurement this flag exists to act on: the channel-quarantine-mode landmine (ENG-6252) in its exact shape. A flag-read failure degrades to `shadow` for the same reason it fails open elsewhere on this path: this is the platform front door, and a `feature_flags` blip must not start refusing the fleet. Deliberately NO envVar. The consumer is the API Lambda, whose environment block is at the AWS 4KB cap (ENG-7972), and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing (ENG-8303). The flag value IS the kill switch: a flip back to shadow takes effect within the ~60s evaluation cache, with no deploy.",
|
|
@@ -34106,7 +34106,15 @@ var INTEGRATION_REGISTRY = [
|
|
|
34106
34106
|
// integration_rate_cards; this only declares the model + meter.
|
|
34107
34107
|
premium: {
|
|
34108
34108
|
pricing: "usage",
|
|
34109
|
-
|
|
34109
|
+
// THE OPT-IN AUTHORISES BOTH METERS, SO THE NOTE NAMES BOTH (ENG-9913).
|
|
34110
|
+
// This string is the point of sale — it renders in the add-integration
|
|
34111
|
+
// dialog an org admin reads before opting in — and it described only
|
|
34112
|
+
// `voice_session` while the same opt-in, and the same $50 pool, had also
|
|
34113
|
+
// covered Ninja Notes cloud transcription since ENG-9870. "Of audio"
|
|
34114
|
+
// rather than "of meeting" is load-bearing: the two capture sources post
|
|
34115
|
+
// independently, so an hour-long meeting on default settings spends two
|
|
34116
|
+
// audio-hours (ADR-0063 §2a).
|
|
34117
|
+
note: "Billed per minute of real-time voice conversation, and per hour of audio for Ninja Notes cloud transcription \u2014 both against the same monthly budget.",
|
|
34110
34118
|
meters: [
|
|
34111
34119
|
{ event_type: "voice_session", unit: "minute" },
|
|
34112
34120
|
// ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
|
|
@@ -34118,16 +34126,24 @@ var INTEGRATION_REGISTRY = [
|
|
|
34118
34126
|
// `audio_hour`, not `minute`. The vendor prices per hour and the sell
|
|
34119
34127
|
// price is per hour, so hours store exactly (50 minor) where minutes
|
|
34120
34128
|
// would be 0.8333 repeating; `integration_usage_events.units` is
|
|
34121
|
-
// `numeric`, so
|
|
34129
|
+
// `numeric`, so 30 minutes of audio records 0.5 units precisely. This
|
|
34122
34130
|
// is the answer to ENG-9773 §10.1's open question about whether hours
|
|
34123
34131
|
// convert to minutes or the vocabulary gains hours.
|
|
34124
34132
|
//
|
|
34125
|
-
//
|
|
34126
|
-
//
|
|
34127
|
-
//
|
|
34128
|
-
//
|
|
34129
|
-
//
|
|
34130
|
-
//
|
|
34133
|
+
// AN AUDIO-HOUR IS NOT A MEETING-HOUR (ENG-9913, Brad, 2026-09-03). The
|
|
34134
|
+
// Mac captures system audio and the microphone as two independent
|
|
34135
|
+
// pipelines that post separately, and both default on, so the ordinary
|
|
34136
|
+
// meeting records two units per wall-clock hour. That is deliberate: the
|
|
34137
|
+
// audio-hour is what we buy, since xAI bills on the duration uploaded.
|
|
34138
|
+
// Pricing per meeting-hour would have varied the markup with a capture
|
|
34139
|
+
// toggle and could only have been built on a client's assertion about
|
|
34140
|
+
// how many pipelines were live. See ADR-0063 §2a.
|
|
34141
|
+
//
|
|
34142
|
+
// THE CHOKEPOINT EXISTS NOW — `POST /notes/transcribe` (ENG-9913)
|
|
34143
|
+
// reserves against this meter before the vendor call, from the bytes it
|
|
34144
|
+
// received. The rate card still had to land first, in ENG-9870: a
|
|
34145
|
+
// billable event with no USD rate makes `evaluateUsageBudget` throw, and
|
|
34146
|
+
// on a SHARED pool that would break Voice Chat's budget check too.
|
|
34131
34147
|
{ event_type: "transcription", unit: "audio_hour" }
|
|
34132
34148
|
]
|
|
34133
34149
|
}
|
|
@@ -35024,7 +35040,18 @@ var INTEGRATION_REGISTRY = [
|
|
|
35024
35040
|
// premium surface — is the structurally right answer and the follow-up.
|
|
35025
35041
|
premium: {
|
|
35026
35042
|
pricing: "included",
|
|
35027
|
-
|
|
35043
|
+
// "THE ONE EXCEPTION" BECAME TWO (ENG-9913). Cloud transcription is the
|
|
35044
|
+
// second metered capability under this integration, and this sentence was
|
|
35045
|
+
// true only for as long as its flag stayed off — it would have become
|
|
35046
|
+
// false on arming, silently, in a consent dialog. Both exceptions are
|
|
35047
|
+
// written the same way, and both are still off until someone turns them
|
|
35048
|
+
// on, so the sentence is accurate before and after the rollout.
|
|
35049
|
+
//
|
|
35050
|
+
// "Per hour of AUDIO" is deliberate here too: the two capture sources post
|
|
35051
|
+
// independently, so an hour-long meeting on default settings spends two
|
|
35052
|
+
// audio-hours (ADR-0063 §2a). The Mac's own caption carries the fuller
|
|
35053
|
+
// explanation, at the point where the person choosing it can read it.
|
|
35054
|
+
note: "Notes are included in your plan. Transcription runs on your own Mac by default and no platform summariser runs, so nothing is metered per note \u2014 the agent turn that reads it is billed as agent-hours like any other. Two capabilities are turned on separately and billed when they are: live meeting advising, per minute the advisor is armed; and cloud transcription, per hour of audio."
|
|
35028
35055
|
}
|
|
35029
35056
|
},
|
|
35030
35057
|
{
|
|
@@ -37918,6 +37945,18 @@ var FLAG_REGISTRY = [
|
|
|
37918
37945
|
// agent-hours-billing-enabled.
|
|
37919
37946
|
sensitive: true
|
|
37920
37947
|
},
|
|
37948
|
+
{
|
|
37949
|
+
key: "cloud-speech-to-text",
|
|
37950
|
+
description: 'Cloud transcription in Ninja Notes (ENG-9913). When ON for an org, a person recording a meeting on the Mac may choose to have each capture window transcribed by xAI instead of on-device: the window is POSTed to /notes/transcribe, proxied to xAI with the platform key, metered as grok-voice/transcription per audio_hour, and the text comes back with no speaker labels. THIS IS OUR ROLLOUT GATE AND IT IS THE THIRD KEY, NOT THE FIRST. Three things must all be true before a window leaves the Mac: the org holds the grok-voice premium opt-in (authorisation, resolveCloudSttEntitlement), the user has elected it per-install (consent, CaptureSettings.cloudTranscriptionEnabled), and this flag is on (our own readiness). Without this flag the first two alone were sufficient, which is why it exists: resolveCloudSttEntitlement reports enabled for every org that ever bought Voice Chat, so the route would go live for all of them the moment it deployed. It is what finally lets the server emit `not_available` \u2014 CloudTranscriptionRefusal.notRolledOut has shipped since ENG-9869 carrying the sentence "Cloud transcription is not available for your organisation yet" with nothing able to produce it. Boolean gate; ships dark. OFF NEVER COSTS THE RECORDING. An org without the flag \u2014 or a flag read that fails \u2014 transcribes on-device exactly as before; the microphone still starts and the note is still transcribed and delivered. Same direction as live-meeting-advisor and for the same reason: the user pressed Record and a recording is what they are owed. It is also what makes rollback cheap, because flipping this off mid-flight degrades in-progress meetings to on-device rather than breaking them. Deliberately NO envVar. This is an org-scoped gate, and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing, the ENG-8303 class exactly. No `since`: the reader is the API route, not a host-side agt-cli consumer, so this does not depend on fleet convergence. The Mac client is a separate fleet that reports no version at all, which is precisely why the gate has to live server-side.',
|
|
37951
|
+
flagType: "boolean",
|
|
37952
|
+
defaultValue: false,
|
|
37953
|
+
// Turning it ON starts sending meeting audio — INCLUDING the other side of
|
|
37954
|
+
// the call, whose participants have not been asked — to a third-party
|
|
37955
|
+
// vendor, and arms a per-audio-hour meter against the org's shared
|
|
37956
|
+
// grok-voice budget. Either half alone would warrant the confirm ADR-0022
|
|
37957
|
+
// §4 reserves for deliberate, audited flips.
|
|
37958
|
+
sensitive: true
|
|
37959
|
+
},
|
|
37921
37960
|
{
|
|
37922
37961
|
key: "first-party-token-refusal",
|
|
37923
37962
|
description: "ENG-8972 AC4 / ADR-0076 decision 2 \u2014 whether `resolveUserId` (packages/api/src/middleware/auth.ts) REFUSES a bearer token carrying a first-party marker that is foreign to the host-exchange lane. SUPABASE_JWT_SECRET is symmetric and signs twelve distinct token families; the generic Bearer door has always admitted any of them that mints a uuid-shaped `sub`, so a token minted for one purpose authenticates as a user for every purpose. off = the capture never runs (no log, no refusal). shadow = record the population an enforcement flip would change, on BOTH admitting lanes (lane=gotrue, lane=sub-claim), and refuse nothing \u2014 this is exactly the behaviour compiled into prod today. enforce = return null with reason=foreign-first-party-marker, above the strategy split, so the token reaches neither GoTrue nor the sub-claim lane. DEFAULT IS `shadow`, NOT `off`, and the divergence is deliberate \u2014 the shadow lines have been live in prod since 68863974b, and they are the soak instrument. Defaulting to `off` would silently switch off the measurement this flag exists to act on: the channel-quarantine-mode landmine (ENG-6252) in its exact shape. A flag-read failure degrades to `shadow` for the same reason it fails open elsewhere on this path: this is the platform front door, and a `feature_flags` blip must not start refusing the fleet. Deliberately NO envVar. The consumer is the API Lambda, whose environment block is at the AWS 4KB cap (ENG-7972), and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing (ENG-8303). The flag value IS the kill switch: a flip back to shadow takes effect within the ~60s evaluation cache, with no deploy.",
|
|
@@ -34264,7 +34264,15 @@ var INTEGRATION_REGISTRY = [
|
|
|
34264
34264
|
// integration_rate_cards; this only declares the model + meter.
|
|
34265
34265
|
premium: {
|
|
34266
34266
|
pricing: "usage",
|
|
34267
|
-
|
|
34267
|
+
// THE OPT-IN AUTHORISES BOTH METERS, SO THE NOTE NAMES BOTH (ENG-9913).
|
|
34268
|
+
// This string is the point of sale — it renders in the add-integration
|
|
34269
|
+
// dialog an org admin reads before opting in — and it described only
|
|
34270
|
+
// `voice_session` while the same opt-in, and the same $50 pool, had also
|
|
34271
|
+
// covered Ninja Notes cloud transcription since ENG-9870. "Of audio"
|
|
34272
|
+
// rather than "of meeting" is load-bearing: the two capture sources post
|
|
34273
|
+
// independently, so an hour-long meeting on default settings spends two
|
|
34274
|
+
// audio-hours (ADR-0063 §2a).
|
|
34275
|
+
note: "Billed per minute of real-time voice conversation, and per hour of audio for Ninja Notes cloud transcription \u2014 both against the same monthly budget.",
|
|
34268
34276
|
meters: [
|
|
34269
34277
|
{ event_type: "voice_session", unit: "minute" },
|
|
34270
34278
|
// ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
|
|
@@ -34276,16 +34284,24 @@ var INTEGRATION_REGISTRY = [
|
|
|
34276
34284
|
// `audio_hour`, not `minute`. The vendor prices per hour and the sell
|
|
34277
34285
|
// price is per hour, so hours store exactly (50 minor) where minutes
|
|
34278
34286
|
// would be 0.8333 repeating; `integration_usage_events.units` is
|
|
34279
|
-
// `numeric`, so
|
|
34287
|
+
// `numeric`, so 30 minutes of audio records 0.5 units precisely. This
|
|
34280
34288
|
// is the answer to ENG-9773 §10.1's open question about whether hours
|
|
34281
34289
|
// convert to minutes or the vocabulary gains hours.
|
|
34282
34290
|
//
|
|
34283
|
-
//
|
|
34284
|
-
//
|
|
34285
|
-
//
|
|
34286
|
-
//
|
|
34287
|
-
//
|
|
34288
|
-
//
|
|
34291
|
+
// AN AUDIO-HOUR IS NOT A MEETING-HOUR (ENG-9913, Brad, 2026-09-03). The
|
|
34292
|
+
// Mac captures system audio and the microphone as two independent
|
|
34293
|
+
// pipelines that post separately, and both default on, so the ordinary
|
|
34294
|
+
// meeting records two units per wall-clock hour. That is deliberate: the
|
|
34295
|
+
// audio-hour is what we buy, since xAI bills on the duration uploaded.
|
|
34296
|
+
// Pricing per meeting-hour would have varied the markup with a capture
|
|
34297
|
+
// toggle and could only have been built on a client's assertion about
|
|
34298
|
+
// how many pipelines were live. See ADR-0063 §2a.
|
|
34299
|
+
//
|
|
34300
|
+
// THE CHOKEPOINT EXISTS NOW — `POST /notes/transcribe` (ENG-9913)
|
|
34301
|
+
// reserves against this meter before the vendor call, from the bytes it
|
|
34302
|
+
// received. The rate card still had to land first, in ENG-9870: a
|
|
34303
|
+
// billable event with no USD rate makes `evaluateUsageBudget` throw, and
|
|
34304
|
+
// on a SHARED pool that would break Voice Chat's budget check too.
|
|
34289
34305
|
{ event_type: "transcription", unit: "audio_hour" }
|
|
34290
34306
|
]
|
|
34291
34307
|
}
|
|
@@ -35182,7 +35198,18 @@ var INTEGRATION_REGISTRY = [
|
|
|
35182
35198
|
// premium surface — is the structurally right answer and the follow-up.
|
|
35183
35199
|
premium: {
|
|
35184
35200
|
pricing: "included",
|
|
35185
|
-
|
|
35201
|
+
// "THE ONE EXCEPTION" BECAME TWO (ENG-9913). Cloud transcription is the
|
|
35202
|
+
// second metered capability under this integration, and this sentence was
|
|
35203
|
+
// true only for as long as its flag stayed off — it would have become
|
|
35204
|
+
// false on arming, silently, in a consent dialog. Both exceptions are
|
|
35205
|
+
// written the same way, and both are still off until someone turns them
|
|
35206
|
+
// on, so the sentence is accurate before and after the rollout.
|
|
35207
|
+
//
|
|
35208
|
+
// "Per hour of AUDIO" is deliberate here too: the two capture sources post
|
|
35209
|
+
// independently, so an hour-long meeting on default settings spends two
|
|
35210
|
+
// audio-hours (ADR-0063 §2a). The Mac's own caption carries the fuller
|
|
35211
|
+
// explanation, at the point where the person choosing it can read it.
|
|
35212
|
+
note: "Notes are included in your plan. Transcription runs on your own Mac by default and no platform summariser runs, so nothing is metered per note \u2014 the agent turn that reads it is billed as agent-hours like any other. Two capabilities are turned on separately and billed when they are: live meeting advising, per minute the advisor is armed; and cloud transcription, per hour of audio."
|
|
35186
35213
|
}
|
|
35187
35214
|
},
|
|
35188
35215
|
{
|
|
@@ -38076,6 +38103,18 @@ var FLAG_REGISTRY = [
|
|
|
38076
38103
|
// agent-hours-billing-enabled.
|
|
38077
38104
|
sensitive: true
|
|
38078
38105
|
},
|
|
38106
|
+
{
|
|
38107
|
+
key: "cloud-speech-to-text",
|
|
38108
|
+
description: 'Cloud transcription in Ninja Notes (ENG-9913). When ON for an org, a person recording a meeting on the Mac may choose to have each capture window transcribed by xAI instead of on-device: the window is POSTed to /notes/transcribe, proxied to xAI with the platform key, metered as grok-voice/transcription per audio_hour, and the text comes back with no speaker labels. THIS IS OUR ROLLOUT GATE AND IT IS THE THIRD KEY, NOT THE FIRST. Three things must all be true before a window leaves the Mac: the org holds the grok-voice premium opt-in (authorisation, resolveCloudSttEntitlement), the user has elected it per-install (consent, CaptureSettings.cloudTranscriptionEnabled), and this flag is on (our own readiness). Without this flag the first two alone were sufficient, which is why it exists: resolveCloudSttEntitlement reports enabled for every org that ever bought Voice Chat, so the route would go live for all of them the moment it deployed. It is what finally lets the server emit `not_available` \u2014 CloudTranscriptionRefusal.notRolledOut has shipped since ENG-9869 carrying the sentence "Cloud transcription is not available for your organisation yet" with nothing able to produce it. Boolean gate; ships dark. OFF NEVER COSTS THE RECORDING. An org without the flag \u2014 or a flag read that fails \u2014 transcribes on-device exactly as before; the microphone still starts and the note is still transcribed and delivered. Same direction as live-meeting-advisor and for the same reason: the user pressed Record and a recording is what they are owed. It is also what makes rollback cheap, because flipping this off mid-flight degrades in-progress meetings to on-device rather than breaking them. Deliberately NO envVar. This is an org-scoped gate, and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing, the ENG-8303 class exactly. No `since`: the reader is the API route, not a host-side agt-cli consumer, so this does not depend on fleet convergence. The Mac client is a separate fleet that reports no version at all, which is precisely why the gate has to live server-side.',
|
|
38109
|
+
flagType: "boolean",
|
|
38110
|
+
defaultValue: false,
|
|
38111
|
+
// Turning it ON starts sending meeting audio — INCLUDING the other side of
|
|
38112
|
+
// the call, whose participants have not been asked — to a third-party
|
|
38113
|
+
// vendor, and arms a per-audio-hour meter against the org's shared
|
|
38114
|
+
// grok-voice budget. Either half alone would warrant the confirm ADR-0022
|
|
38115
|
+
// §4 reserves for deliberate, audited flips.
|
|
38116
|
+
sensitive: true
|
|
38117
|
+
},
|
|
38079
38118
|
{
|
|
38080
38119
|
key: "first-party-token-refusal",
|
|
38081
38120
|
description: "ENG-8972 AC4 / ADR-0076 decision 2 \u2014 whether `resolveUserId` (packages/api/src/middleware/auth.ts) REFUSES a bearer token carrying a first-party marker that is foreign to the host-exchange lane. SUPABASE_JWT_SECRET is symmetric and signs twelve distinct token families; the generic Bearer door has always admitted any of them that mints a uuid-shaped `sub`, so a token minted for one purpose authenticates as a user for every purpose. off = the capture never runs (no log, no refusal). shadow = record the population an enforcement flip would change, on BOTH admitting lanes (lane=gotrue, lane=sub-claim), and refuse nothing \u2014 this is exactly the behaviour compiled into prod today. enforce = return null with reason=foreign-first-party-marker, above the strategy split, so the token reaches neither GoTrue nor the sub-claim lane. DEFAULT IS `shadow`, NOT `off`, and the divergence is deliberate \u2014 the shadow lines have been live in prod since 68863974b, and they are the soak instrument. Defaulting to `off` would silently switch off the measurement this flag exists to act on: the channel-quarantine-mode landmine (ENG-6252) in its exact shape. A flag-read failure degrades to `shadow` for the same reason it fails open elsewhere on this path: this is the platform front door, and a `feature_flags` blip must not start refusing the fleet. Deliberately NO envVar. The consumer is the API Lambda, whose environment block is at the AWS 4KB cap (ENG-7972), and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing (ENG-8303). The flag value IS the kill switch: a flip back to shadow takes effect within the ~60s evaluation cache, with no deploy.",
|
|
@@ -49,8 +49,8 @@ import {
|
|
|
49
49
|
writeDirectChatSessionState,
|
|
50
50
|
writeEgressAllowlist,
|
|
51
51
|
writePersistentClaudeWrapper
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import "./chunk-
|
|
52
|
+
} from "./chunk-SBRKT2AV.js";
|
|
53
|
+
import "./chunk-GBSP65E7.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-LYJCGKH3.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-SBRKT2AV.js";
|
|
4
|
+
import "./chunk-GBSP65E7.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-XRSACVMN.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GBSP65E7.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-Y6MASYWN.js.map
|