@integrity-labs/agt-cli 0.28.424 → 0.28.425
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 +4 -4
- package/dist/{chunk-2QBY2QVX.js → chunk-M3L6HOYG.js} +3 -3
- package/dist/{chunk-CWIWI2ZX.js → chunk-PR3IJAMV.js} +81 -1
- package/dist/chunk-PR3IJAMV.js.map +1 -0
- package/dist/{claude-pair-runtime-PAP4BS3I.js → claude-pair-runtime-XN4JLRAB.js} +2 -2
- package/dist/lib/manager-worker.js +10 -10
- package/dist/mcp/direct-chat-channel.js +80 -0
- package/dist/mcp/origami.js +80 -0
- package/dist/mcp/slack-channel.js +80 -0
- package/dist/mcp/telegram-channel.js +80 -0
- package/dist/{persistent-session-O7OCNB6B.js → persistent-session-37WNPBRA.js} +2 -2
- package/dist/{responsiveness-probe-R5FWKHPI.js → responsiveness-probe-GMIXR3TR.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-CWIWI2ZX.js.map +0 -1
- /package/dist/{chunk-2QBY2QVX.js.map → chunk-M3L6HOYG.js.map} +0 -0
- /package/dist/{claude-pair-runtime-PAP4BS3I.js.map → claude-pair-runtime-XN4JLRAB.js.map} +0 -0
- /package/dist/{persistent-session-O7OCNB6B.js.map → persistent-session-37WNPBRA.js.map} +0 -0
- /package/dist/{responsiveness-probe-R5FWKHPI.js.map → responsiveness-probe-GMIXR3TR.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-37WNPBRA.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-XN4JLRAB.js.map
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
resolveEffectivePinRaw,
|
|
46
46
|
safeWriteJsonAtomic,
|
|
47
47
|
setConfigHash
|
|
48
|
-
} from "../chunk-
|
|
48
|
+
} from "../chunk-M3L6HOYG.js";
|
|
49
49
|
import {
|
|
50
50
|
getProjectDir as getProjectDir2,
|
|
51
51
|
getReadyTasks,
|
|
@@ -150,7 +150,7 @@ import {
|
|
|
150
150
|
toOpencodeModel,
|
|
151
151
|
transcriptActivityAgeSeconds,
|
|
152
152
|
writeEgressAllowlist
|
|
153
|
-
} from "../chunk-
|
|
153
|
+
} from "../chunk-PR3IJAMV.js";
|
|
154
154
|
import {
|
|
155
155
|
reapOrphanChannelMcps
|
|
156
156
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -9479,7 +9479,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
9479
9479
|
var lastVersionCheckAt = 0;
|
|
9480
9480
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
9481
9481
|
var lastResponsivenessProbeAt = 0;
|
|
9482
|
-
var agtCliVersion = true ? "0.28.
|
|
9482
|
+
var agtCliVersion = true ? "0.28.425" : "dev";
|
|
9483
9483
|
function resolveBrewPath(execFileSync2) {
|
|
9484
9484
|
try {
|
|
9485
9485
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -10627,7 +10627,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
10627
10627
|
if (codeNames.length === 0) return;
|
|
10628
10628
|
void (async () => {
|
|
10629
10629
|
try {
|
|
10630
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10630
|
+
const { collectDiagnostics } = await import("../persistent-session-37WNPBRA.js");
|
|
10631
10631
|
await api.post("/host/heartbeat", {
|
|
10632
10632
|
host_id: hostId,
|
|
10633
10633
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor)
|
|
@@ -10734,7 +10734,7 @@ async function pollCycle() {
|
|
|
10734
10734
|
}
|
|
10735
10735
|
try {
|
|
10736
10736
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
10737
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10737
|
+
const { collectDiagnostics } = await import("../persistent-session-37WNPBRA.js");
|
|
10738
10738
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
10739
10739
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor) : void 0;
|
|
10740
10740
|
let tailscaleHostname;
|
|
@@ -10848,7 +10848,7 @@ async function pollCycle() {
|
|
|
10848
10848
|
collectResponsivenessProbes,
|
|
10849
10849
|
collectPanelessActivityProbes,
|
|
10850
10850
|
getResponsivenessIntervalMs
|
|
10851
|
-
} = await import("../responsiveness-probe-
|
|
10851
|
+
} = await import("../responsiveness-probe-GMIXR3TR.js");
|
|
10852
10852
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
10853
10853
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
10854
10854
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -10887,7 +10887,7 @@ async function pollCycle() {
|
|
|
10887
10887
|
collectResponsivenessProbes,
|
|
10888
10888
|
livePendingInboundOldestAgeSeconds,
|
|
10889
10889
|
parkPendingInbound
|
|
10890
|
-
} = await import("../responsiveness-probe-
|
|
10890
|
+
} = await import("../responsiveness-probe-GMIXR3TR.js");
|
|
10891
10891
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
10892
10892
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
10893
10893
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -14198,7 +14198,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
14198
14198
|
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}`));
|
|
14199
14199
|
void (async () => {
|
|
14200
14200
|
try {
|
|
14201
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
14201
|
+
const { collectDiagnostics } = await import("../persistent-session-37WNPBRA.js");
|
|
14202
14202
|
await api.post("/host/heartbeat", {
|
|
14203
14203
|
host_id: hostId,
|
|
14204
14204
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor)
|
|
@@ -14248,7 +14248,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
14248
14248
|
}
|
|
14249
14249
|
try {
|
|
14250
14250
|
const hostId = await getHostId();
|
|
14251
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
14251
|
+
const { collectDiagnostics } = await import("../persistent-session-37WNPBRA.js");
|
|
14252
14252
|
await api.post("/host/heartbeat", {
|
|
14253
14253
|
host_id: hostId,
|
|
14254
14254
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor)
|
|
@@ -14701,7 +14701,7 @@ async function processClaudePairSessions(agents) {
|
|
|
14701
14701
|
killPairSession,
|
|
14702
14702
|
pairTmuxSession,
|
|
14703
14703
|
finalizeClaudePairOnboarding
|
|
14704
|
-
} = await import("../claude-pair-runtime-
|
|
14704
|
+
} = await import("../claude-pair-runtime-XN4JLRAB.js");
|
|
14705
14705
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
14706
14706
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
14707
14707
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -33899,6 +33899,86 @@ var INTEGRATION_REGISTRY = [
|
|
|
33899
33899
|
]
|
|
33900
33900
|
}
|
|
33901
33901
|
},
|
|
33902
|
+
{
|
|
33903
|
+
// Social Scraping: a PREMIUM, platform-managed integration on the Deck /
|
|
33904
|
+
// Firecrawl / X-Search model (ADR-0031, epic ENG-6920; ADR-0053). Backed by
|
|
33905
|
+
// Apify, but deliberately NOT surfaced as an "Apify" integration - the
|
|
33906
|
+
// integration is what a customer picks, and Apify is a vendor, not a job.
|
|
33907
|
+
// Splitting by job also means opt-in, rate card and monthly budget are keyed
|
|
33908
|
+
// per definition, so an org can take Local Business Data without taking the
|
|
33909
|
+
// pricier, more ToS-sensitive social scraping.
|
|
33910
|
+
//
|
|
33911
|
+
// Augmented holds ONE Apify account whose token (APIFY_API_TOKEN, read
|
|
33912
|
+
// from SSM - the API Lambda env is at the 4KB cap) every customer run bills
|
|
33913
|
+
// back to, so the key is a single platform-held secret, NOT a per-agent
|
|
33914
|
+
// credential. Auth type is `none` - customers never enter a key. Tools run on
|
|
33915
|
+
// a brokered-REST lane (apify-brokers.ts) so each run is metered at one
|
|
33916
|
+
// chokepoint and gated on a per-org monthly USD cap + the per-org premium
|
|
33917
|
+
// opt-in.
|
|
33918
|
+
//
|
|
33919
|
+
// "PPE-only" is guaranteed by a curated allowlist: the broker only ever runs
|
|
33920
|
+
// Actors on it, so a rental / pay-per-usage Actor can never surprise-bill the
|
|
33921
|
+
// shared account. (Apify's x402 rail enforces PPE-only at the payment layer;
|
|
33922
|
+
// we are on the account-key rail - Option A in the spike.) See
|
|
33923
|
+
// docs/design/apify-premium-option-a-ppe-allowlist.md.
|
|
33924
|
+
//
|
|
33925
|
+
// No `installable` here on purpose: this is a seed integration
|
|
33926
|
+
// (integration-definitions.json), so the seed catalog already makes it
|
|
33927
|
+
// picker-visible. This registry entry exists ONLY to carry the `premium`
|
|
33928
|
+
// descriptor that `isPremiumDefinition` reads - which arms the per-org opt-in
|
|
33929
|
+
// gate, the priced acknowledgement modal, and the admin pricing tab.
|
|
33930
|
+
id: "social-scraping",
|
|
33931
|
+
name: "Social Scraping",
|
|
33932
|
+
category: "social",
|
|
33933
|
+
description: "Pull public posts and videos from TikTok, Instagram and YouTube - captions, media, engagement counts and URLs - for brand, competitor and campaign research. Augmented Team manages the scraping account for you; there is no key to enter.",
|
|
33934
|
+
supported_auth_types: ["none"],
|
|
33935
|
+
capabilities: [
|
|
33936
|
+
{ id: "social-scraping:scrape", name: "Scrape Social Posts", description: "Scrape public TikTok, Instagram and YouTube content (social_scrape_tiktok, social_scrape_instagram, social_scrape_youtube).", access: "write" },
|
|
33937
|
+
{ id: "social-scraping:status", name: "Check Scrape Runs", description: "Poll a running scrape for status + results (social_scrape_status).", access: "read" }
|
|
33938
|
+
],
|
|
33939
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
33940
|
+
beta: true,
|
|
33941
|
+
// Premium (billable). The upstream pay-per-event cost is per-Actor and
|
|
33942
|
+
// VARIABLE (each Actor's creator sets its own event prices), unlike X-Search's
|
|
33943
|
+
// fixed per-post price. So we meter the ACTUAL cost charged to us for each
|
|
33944
|
+
// run, as a pass-through: `units` = the run's `usageTotalUsd` in whole US
|
|
33945
|
+
// cents (the physical unit `usd_cent`), and the rate card prices each cent at
|
|
33946
|
+
// a managed markup (1.5x USD). This keeps margin safe across cheap and
|
|
33947
|
+
// expensive scrapes alike. `event_type` must match what the broker writes to
|
|
33948
|
+
// integration_usage_events. Until the rate row is seeded a run prices at 0
|
|
33949
|
+
// (budget gate inert) - the rate-card migration ships in the same PR.
|
|
33950
|
+
premium: {
|
|
33951
|
+
pricing: "usage",
|
|
33952
|
+
note: "Billed per result on the upstream pay-per-event cost of each scrape, at a managed markup.",
|
|
33953
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
33954
|
+
}
|
|
33955
|
+
},
|
|
33956
|
+
{
|
|
33957
|
+
// Local Business Data: the second Apify-backed premium integration (ADR-0053).
|
|
33958
|
+
// Same platform-held account, same pass-through metering model, but a separate
|
|
33959
|
+
// definition so its opt-in, rate card and monthly budget are independent of
|
|
33960
|
+
// Social Scraping's - see the note on that entry for why the split exists.
|
|
33961
|
+
//
|
|
33962
|
+
// Distinct from Firecrawl on purpose: Firecrawl covers generic web
|
|
33963
|
+
// scrape/crawl/search, and we deliberately do NOT ship an Apify-backed
|
|
33964
|
+
// duplicate of that. This is the local-places job Firecrawl does not do.
|
|
33965
|
+
id: "local-business-data",
|
|
33966
|
+
name: "Local Business Data",
|
|
33967
|
+
category: "knowledge",
|
|
33968
|
+
description: "Find local businesses on Google Maps and pull their public listing details - name, address, phone, website, category, rating and review count - for local market research, competitor lists and lead research. Augmented Team manages the data account for you; there is no key to enter.",
|
|
33969
|
+
supported_auth_types: ["none"],
|
|
33970
|
+
capabilities: [
|
|
33971
|
+
{ id: "local-business-data:search", name: "Search Local Businesses", description: "Search Google Maps for businesses and return their public listing details (local_business_search).", access: "write" },
|
|
33972
|
+
{ id: "local-business-data:status", name: "Check Searches", description: "Poll a running search for status + results (local_business_search_status).", access: "read" }
|
|
33973
|
+
],
|
|
33974
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
33975
|
+
beta: true,
|
|
33976
|
+
premium: {
|
|
33977
|
+
pricing: "usage",
|
|
33978
|
+
note: "Billed per place returned on the upstream pay-per-event cost of each search, at a managed markup.",
|
|
33979
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
33980
|
+
}
|
|
33981
|
+
},
|
|
33902
33982
|
{
|
|
33903
33983
|
// Seed-catalog toolkit (composed by the ultimate-app-coder bundle). Registered
|
|
33904
33984
|
// here only so the manager's ensureToolkitCli installs the binary via the
|
package/dist/mcp/origami.js
CHANGED
|
@@ -39538,6 +39538,86 @@ var INTEGRATION_REGISTRY = [
|
|
|
39538
39538
|
]
|
|
39539
39539
|
}
|
|
39540
39540
|
},
|
|
39541
|
+
{
|
|
39542
|
+
// Social Scraping: a PREMIUM, platform-managed integration on the Deck /
|
|
39543
|
+
// Firecrawl / X-Search model (ADR-0031, epic ENG-6920; ADR-0053). Backed by
|
|
39544
|
+
// Apify, but deliberately NOT surfaced as an "Apify" integration - the
|
|
39545
|
+
// integration is what a customer picks, and Apify is a vendor, not a job.
|
|
39546
|
+
// Splitting by job also means opt-in, rate card and monthly budget are keyed
|
|
39547
|
+
// per definition, so an org can take Local Business Data without taking the
|
|
39548
|
+
// pricier, more ToS-sensitive social scraping.
|
|
39549
|
+
//
|
|
39550
|
+
// Augmented holds ONE Apify account whose token (APIFY_API_TOKEN, read
|
|
39551
|
+
// from SSM - the API Lambda env is at the 4KB cap) every customer run bills
|
|
39552
|
+
// back to, so the key is a single platform-held secret, NOT a per-agent
|
|
39553
|
+
// credential. Auth type is `none` - customers never enter a key. Tools run on
|
|
39554
|
+
// a brokered-REST lane (apify-brokers.ts) so each run is metered at one
|
|
39555
|
+
// chokepoint and gated on a per-org monthly USD cap + the per-org premium
|
|
39556
|
+
// opt-in.
|
|
39557
|
+
//
|
|
39558
|
+
// "PPE-only" is guaranteed by a curated allowlist: the broker only ever runs
|
|
39559
|
+
// Actors on it, so a rental / pay-per-usage Actor can never surprise-bill the
|
|
39560
|
+
// shared account. (Apify's x402 rail enforces PPE-only at the payment layer;
|
|
39561
|
+
// we are on the account-key rail - Option A in the spike.) See
|
|
39562
|
+
// docs/design/apify-premium-option-a-ppe-allowlist.md.
|
|
39563
|
+
//
|
|
39564
|
+
// No `installable` here on purpose: this is a seed integration
|
|
39565
|
+
// (integration-definitions.json), so the seed catalog already makes it
|
|
39566
|
+
// picker-visible. This registry entry exists ONLY to carry the `premium`
|
|
39567
|
+
// descriptor that `isPremiumDefinition` reads - which arms the per-org opt-in
|
|
39568
|
+
// gate, the priced acknowledgement modal, and the admin pricing tab.
|
|
39569
|
+
id: "social-scraping",
|
|
39570
|
+
name: "Social Scraping",
|
|
39571
|
+
category: "social",
|
|
39572
|
+
description: "Pull public posts and videos from TikTok, Instagram and YouTube - captions, media, engagement counts and URLs - for brand, competitor and campaign research. Augmented Team manages the scraping account for you; there is no key to enter.",
|
|
39573
|
+
supported_auth_types: ["none"],
|
|
39574
|
+
capabilities: [
|
|
39575
|
+
{ id: "social-scraping:scrape", name: "Scrape Social Posts", description: "Scrape public TikTok, Instagram and YouTube content (social_scrape_tiktok, social_scrape_instagram, social_scrape_youtube).", access: "write" },
|
|
39576
|
+
{ id: "social-scraping:status", name: "Check Scrape Runs", description: "Poll a running scrape for status + results (social_scrape_status).", access: "read" }
|
|
39577
|
+
],
|
|
39578
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
39579
|
+
beta: true,
|
|
39580
|
+
// Premium (billable). The upstream pay-per-event cost is per-Actor and
|
|
39581
|
+
// VARIABLE (each Actor's creator sets its own event prices), unlike X-Search's
|
|
39582
|
+
// fixed per-post price. So we meter the ACTUAL cost charged to us for each
|
|
39583
|
+
// run, as a pass-through: `units` = the run's `usageTotalUsd` in whole US
|
|
39584
|
+
// cents (the physical unit `usd_cent`), and the rate card prices each cent at
|
|
39585
|
+
// a managed markup (1.5x USD). This keeps margin safe across cheap and
|
|
39586
|
+
// expensive scrapes alike. `event_type` must match what the broker writes to
|
|
39587
|
+
// integration_usage_events. Until the rate row is seeded a run prices at 0
|
|
39588
|
+
// (budget gate inert) - the rate-card migration ships in the same PR.
|
|
39589
|
+
premium: {
|
|
39590
|
+
pricing: "usage",
|
|
39591
|
+
note: "Billed per result on the upstream pay-per-event cost of each scrape, at a managed markup.",
|
|
39592
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
39593
|
+
}
|
|
39594
|
+
},
|
|
39595
|
+
{
|
|
39596
|
+
// Local Business Data: the second Apify-backed premium integration (ADR-0053).
|
|
39597
|
+
// Same platform-held account, same pass-through metering model, but a separate
|
|
39598
|
+
// definition so its opt-in, rate card and monthly budget are independent of
|
|
39599
|
+
// Social Scraping's - see the note on that entry for why the split exists.
|
|
39600
|
+
//
|
|
39601
|
+
// Distinct from Firecrawl on purpose: Firecrawl covers generic web
|
|
39602
|
+
// scrape/crawl/search, and we deliberately do NOT ship an Apify-backed
|
|
39603
|
+
// duplicate of that. This is the local-places job Firecrawl does not do.
|
|
39604
|
+
id: "local-business-data",
|
|
39605
|
+
name: "Local Business Data",
|
|
39606
|
+
category: "knowledge",
|
|
39607
|
+
description: "Find local businesses on Google Maps and pull their public listing details - name, address, phone, website, category, rating and review count - for local market research, competitor lists and lead research. Augmented Team manages the data account for you; there is no key to enter.",
|
|
39608
|
+
supported_auth_types: ["none"],
|
|
39609
|
+
capabilities: [
|
|
39610
|
+
{ id: "local-business-data:search", name: "Search Local Businesses", description: "Search Google Maps for businesses and return their public listing details (local_business_search).", access: "write" },
|
|
39611
|
+
{ id: "local-business-data:status", name: "Check Searches", description: "Poll a running search for status + results (local_business_search_status).", access: "read" }
|
|
39612
|
+
],
|
|
39613
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
39614
|
+
beta: true,
|
|
39615
|
+
premium: {
|
|
39616
|
+
pricing: "usage",
|
|
39617
|
+
note: "Billed per place returned on the upstream pay-per-event cost of each search, at a managed markup.",
|
|
39618
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
39619
|
+
}
|
|
39620
|
+
},
|
|
39541
39621
|
{
|
|
39542
39622
|
// Seed-catalog toolkit (composed by the ultimate-app-coder bundle). Registered
|
|
39543
39623
|
// here only so the manager's ensureToolkitCli installs the binary via the
|
|
@@ -33469,6 +33469,86 @@ var INTEGRATION_REGISTRY = [
|
|
|
33469
33469
|
]
|
|
33470
33470
|
}
|
|
33471
33471
|
},
|
|
33472
|
+
{
|
|
33473
|
+
// Social Scraping: a PREMIUM, platform-managed integration on the Deck /
|
|
33474
|
+
// Firecrawl / X-Search model (ADR-0031, epic ENG-6920; ADR-0053). Backed by
|
|
33475
|
+
// Apify, but deliberately NOT surfaced as an "Apify" integration - the
|
|
33476
|
+
// integration is what a customer picks, and Apify is a vendor, not a job.
|
|
33477
|
+
// Splitting by job also means opt-in, rate card and monthly budget are keyed
|
|
33478
|
+
// per definition, so an org can take Local Business Data without taking the
|
|
33479
|
+
// pricier, more ToS-sensitive social scraping.
|
|
33480
|
+
//
|
|
33481
|
+
// Augmented holds ONE Apify account whose token (APIFY_API_TOKEN, read
|
|
33482
|
+
// from SSM - the API Lambda env is at the 4KB cap) every customer run bills
|
|
33483
|
+
// back to, so the key is a single platform-held secret, NOT a per-agent
|
|
33484
|
+
// credential. Auth type is `none` - customers never enter a key. Tools run on
|
|
33485
|
+
// a brokered-REST lane (apify-brokers.ts) so each run is metered at one
|
|
33486
|
+
// chokepoint and gated on a per-org monthly USD cap + the per-org premium
|
|
33487
|
+
// opt-in.
|
|
33488
|
+
//
|
|
33489
|
+
// "PPE-only" is guaranteed by a curated allowlist: the broker only ever runs
|
|
33490
|
+
// Actors on it, so a rental / pay-per-usage Actor can never surprise-bill the
|
|
33491
|
+
// shared account. (Apify's x402 rail enforces PPE-only at the payment layer;
|
|
33492
|
+
// we are on the account-key rail - Option A in the spike.) See
|
|
33493
|
+
// docs/design/apify-premium-option-a-ppe-allowlist.md.
|
|
33494
|
+
//
|
|
33495
|
+
// No `installable` here on purpose: this is a seed integration
|
|
33496
|
+
// (integration-definitions.json), so the seed catalog already makes it
|
|
33497
|
+
// picker-visible. This registry entry exists ONLY to carry the `premium`
|
|
33498
|
+
// descriptor that `isPremiumDefinition` reads - which arms the per-org opt-in
|
|
33499
|
+
// gate, the priced acknowledgement modal, and the admin pricing tab.
|
|
33500
|
+
id: "social-scraping",
|
|
33501
|
+
name: "Social Scraping",
|
|
33502
|
+
category: "social",
|
|
33503
|
+
description: "Pull public posts and videos from TikTok, Instagram and YouTube - captions, media, engagement counts and URLs - for brand, competitor and campaign research. Augmented Team manages the scraping account for you; there is no key to enter.",
|
|
33504
|
+
supported_auth_types: ["none"],
|
|
33505
|
+
capabilities: [
|
|
33506
|
+
{ id: "social-scraping:scrape", name: "Scrape Social Posts", description: "Scrape public TikTok, Instagram and YouTube content (social_scrape_tiktok, social_scrape_instagram, social_scrape_youtube).", access: "write" },
|
|
33507
|
+
{ id: "social-scraping:status", name: "Check Scrape Runs", description: "Poll a running scrape for status + results (social_scrape_status).", access: "read" }
|
|
33508
|
+
],
|
|
33509
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
33510
|
+
beta: true,
|
|
33511
|
+
// Premium (billable). The upstream pay-per-event cost is per-Actor and
|
|
33512
|
+
// VARIABLE (each Actor's creator sets its own event prices), unlike X-Search's
|
|
33513
|
+
// fixed per-post price. So we meter the ACTUAL cost charged to us for each
|
|
33514
|
+
// run, as a pass-through: `units` = the run's `usageTotalUsd` in whole US
|
|
33515
|
+
// cents (the physical unit `usd_cent`), and the rate card prices each cent at
|
|
33516
|
+
// a managed markup (1.5x USD). This keeps margin safe across cheap and
|
|
33517
|
+
// expensive scrapes alike. `event_type` must match what the broker writes to
|
|
33518
|
+
// integration_usage_events. Until the rate row is seeded a run prices at 0
|
|
33519
|
+
// (budget gate inert) - the rate-card migration ships in the same PR.
|
|
33520
|
+
premium: {
|
|
33521
|
+
pricing: "usage",
|
|
33522
|
+
note: "Billed per result on the upstream pay-per-event cost of each scrape, at a managed markup.",
|
|
33523
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
33524
|
+
}
|
|
33525
|
+
},
|
|
33526
|
+
{
|
|
33527
|
+
// Local Business Data: the second Apify-backed premium integration (ADR-0053).
|
|
33528
|
+
// Same platform-held account, same pass-through metering model, but a separate
|
|
33529
|
+
// definition so its opt-in, rate card and monthly budget are independent of
|
|
33530
|
+
// Social Scraping's - see the note on that entry for why the split exists.
|
|
33531
|
+
//
|
|
33532
|
+
// Distinct from Firecrawl on purpose: Firecrawl covers generic web
|
|
33533
|
+
// scrape/crawl/search, and we deliberately do NOT ship an Apify-backed
|
|
33534
|
+
// duplicate of that. This is the local-places job Firecrawl does not do.
|
|
33535
|
+
id: "local-business-data",
|
|
33536
|
+
name: "Local Business Data",
|
|
33537
|
+
category: "knowledge",
|
|
33538
|
+
description: "Find local businesses on Google Maps and pull their public listing details - name, address, phone, website, category, rating and review count - for local market research, competitor lists and lead research. Augmented Team manages the data account for you; there is no key to enter.",
|
|
33539
|
+
supported_auth_types: ["none"],
|
|
33540
|
+
capabilities: [
|
|
33541
|
+
{ id: "local-business-data:search", name: "Search Local Businesses", description: "Search Google Maps for businesses and return their public listing details (local_business_search).", access: "write" },
|
|
33542
|
+
{ id: "local-business-data:status", name: "Check Searches", description: "Poll a running search for status + results (local_business_search_status).", access: "read" }
|
|
33543
|
+
],
|
|
33544
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
33545
|
+
beta: true,
|
|
33546
|
+
premium: {
|
|
33547
|
+
pricing: "usage",
|
|
33548
|
+
note: "Billed per place returned on the upstream pay-per-event cost of each search, at a managed markup.",
|
|
33549
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
33550
|
+
}
|
|
33551
|
+
},
|
|
33472
33552
|
{
|
|
33473
33553
|
// Seed-catalog toolkit (composed by the ultimate-app-coder bundle). Registered
|
|
33474
33554
|
// here only so the manager's ensureToolkitCli installs the binary via the
|
|
@@ -33771,6 +33771,86 @@ var INTEGRATION_REGISTRY = [
|
|
|
33771
33771
|
]
|
|
33772
33772
|
}
|
|
33773
33773
|
},
|
|
33774
|
+
{
|
|
33775
|
+
// Social Scraping: a PREMIUM, platform-managed integration on the Deck /
|
|
33776
|
+
// Firecrawl / X-Search model (ADR-0031, epic ENG-6920; ADR-0053). Backed by
|
|
33777
|
+
// Apify, but deliberately NOT surfaced as an "Apify" integration - the
|
|
33778
|
+
// integration is what a customer picks, and Apify is a vendor, not a job.
|
|
33779
|
+
// Splitting by job also means opt-in, rate card and monthly budget are keyed
|
|
33780
|
+
// per definition, so an org can take Local Business Data without taking the
|
|
33781
|
+
// pricier, more ToS-sensitive social scraping.
|
|
33782
|
+
//
|
|
33783
|
+
// Augmented holds ONE Apify account whose token (APIFY_API_TOKEN, read
|
|
33784
|
+
// from SSM - the API Lambda env is at the 4KB cap) every customer run bills
|
|
33785
|
+
// back to, so the key is a single platform-held secret, NOT a per-agent
|
|
33786
|
+
// credential. Auth type is `none` - customers never enter a key. Tools run on
|
|
33787
|
+
// a brokered-REST lane (apify-brokers.ts) so each run is metered at one
|
|
33788
|
+
// chokepoint and gated on a per-org monthly USD cap + the per-org premium
|
|
33789
|
+
// opt-in.
|
|
33790
|
+
//
|
|
33791
|
+
// "PPE-only" is guaranteed by a curated allowlist: the broker only ever runs
|
|
33792
|
+
// Actors on it, so a rental / pay-per-usage Actor can never surprise-bill the
|
|
33793
|
+
// shared account. (Apify's x402 rail enforces PPE-only at the payment layer;
|
|
33794
|
+
// we are on the account-key rail - Option A in the spike.) See
|
|
33795
|
+
// docs/design/apify-premium-option-a-ppe-allowlist.md.
|
|
33796
|
+
//
|
|
33797
|
+
// No `installable` here on purpose: this is a seed integration
|
|
33798
|
+
// (integration-definitions.json), so the seed catalog already makes it
|
|
33799
|
+
// picker-visible. This registry entry exists ONLY to carry the `premium`
|
|
33800
|
+
// descriptor that `isPremiumDefinition` reads - which arms the per-org opt-in
|
|
33801
|
+
// gate, the priced acknowledgement modal, and the admin pricing tab.
|
|
33802
|
+
id: "social-scraping",
|
|
33803
|
+
name: "Social Scraping",
|
|
33804
|
+
category: "social",
|
|
33805
|
+
description: "Pull public posts and videos from TikTok, Instagram and YouTube - captions, media, engagement counts and URLs - for brand, competitor and campaign research. Augmented Team manages the scraping account for you; there is no key to enter.",
|
|
33806
|
+
supported_auth_types: ["none"],
|
|
33807
|
+
capabilities: [
|
|
33808
|
+
{ id: "social-scraping:scrape", name: "Scrape Social Posts", description: "Scrape public TikTok, Instagram and YouTube content (social_scrape_tiktok, social_scrape_instagram, social_scrape_youtube).", access: "write" },
|
|
33809
|
+
{ id: "social-scraping:status", name: "Check Scrape Runs", description: "Poll a running scrape for status + results (social_scrape_status).", access: "read" }
|
|
33810
|
+
],
|
|
33811
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
33812
|
+
beta: true,
|
|
33813
|
+
// Premium (billable). The upstream pay-per-event cost is per-Actor and
|
|
33814
|
+
// VARIABLE (each Actor's creator sets its own event prices), unlike X-Search's
|
|
33815
|
+
// fixed per-post price. So we meter the ACTUAL cost charged to us for each
|
|
33816
|
+
// run, as a pass-through: `units` = the run's `usageTotalUsd` in whole US
|
|
33817
|
+
// cents (the physical unit `usd_cent`), and the rate card prices each cent at
|
|
33818
|
+
// a managed markup (1.5x USD). This keeps margin safe across cheap and
|
|
33819
|
+
// expensive scrapes alike. `event_type` must match what the broker writes to
|
|
33820
|
+
// integration_usage_events. Until the rate row is seeded a run prices at 0
|
|
33821
|
+
// (budget gate inert) - the rate-card migration ships in the same PR.
|
|
33822
|
+
premium: {
|
|
33823
|
+
pricing: "usage",
|
|
33824
|
+
note: "Billed per result on the upstream pay-per-event cost of each scrape, at a managed markup.",
|
|
33825
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
33826
|
+
}
|
|
33827
|
+
},
|
|
33828
|
+
{
|
|
33829
|
+
// Local Business Data: the second Apify-backed premium integration (ADR-0053).
|
|
33830
|
+
// Same platform-held account, same pass-through metering model, but a separate
|
|
33831
|
+
// definition so its opt-in, rate card and monthly budget are independent of
|
|
33832
|
+
// Social Scraping's - see the note on that entry for why the split exists.
|
|
33833
|
+
//
|
|
33834
|
+
// Distinct from Firecrawl on purpose: Firecrawl covers generic web
|
|
33835
|
+
// scrape/crawl/search, and we deliberately do NOT ship an Apify-backed
|
|
33836
|
+
// duplicate of that. This is the local-places job Firecrawl does not do.
|
|
33837
|
+
id: "local-business-data",
|
|
33838
|
+
name: "Local Business Data",
|
|
33839
|
+
category: "knowledge",
|
|
33840
|
+
description: "Find local businesses on Google Maps and pull their public listing details - name, address, phone, website, category, rating and review count - for local market research, competitor lists and lead research. Augmented Team manages the data account for you; there is no key to enter.",
|
|
33841
|
+
supported_auth_types: ["none"],
|
|
33842
|
+
capabilities: [
|
|
33843
|
+
{ id: "local-business-data:search", name: "Search Local Businesses", description: "Search Google Maps for businesses and return their public listing details (local_business_search).", access: "write" },
|
|
33844
|
+
{ id: "local-business-data:status", name: "Check Searches", description: "Poll a running search for status + results (local_business_search_status).", access: "read" }
|
|
33845
|
+
],
|
|
33846
|
+
docs_url: "https://docs.apify.com/api/v2",
|
|
33847
|
+
beta: true,
|
|
33848
|
+
premium: {
|
|
33849
|
+
pricing: "usage",
|
|
33850
|
+
note: "Billed per place returned on the upstream pay-per-event cost of each search, at a managed markup.",
|
|
33851
|
+
meters: [{ event_type: "actor_run", unit: "usd_cent" }]
|
|
33852
|
+
}
|
|
33853
|
+
},
|
|
33774
33854
|
{
|
|
33775
33855
|
// Seed-catalog toolkit (composed by the ultimate-app-coder bundle). Registered
|
|
33776
33856
|
// here only so the manager's ensureToolkitCli installs the binary via the
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
writeDirectChatSessionState,
|
|
37
37
|
writeEgressAllowlist,
|
|
38
38
|
writePersistentClaudeWrapper
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-PR3IJAMV.js";
|
|
40
40
|
import "./chunk-XWVM4KPK.js";
|
|
41
41
|
export {
|
|
42
42
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -77,4 +77,4 @@ export {
|
|
|
77
77
|
writeEgressAllowlist,
|
|
78
78
|
writePersistentClaudeWrapper
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=persistent-session-
|
|
80
|
+
//# sourceMappingURL=persistent-session-37WNPBRA.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PR3IJAMV.js";
|
|
4
4
|
import "./chunk-XWVM4KPK.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/responsiveness-probe.ts
|
|
@@ -471,4 +471,4 @@ export {
|
|
|
471
471
|
readAndResetSlackReplyBindingClassifications,
|
|
472
472
|
readAndResetSlackReplyTargetClassifications
|
|
473
473
|
};
|
|
474
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
474
|
+
//# sourceMappingURL=responsiveness-probe-GMIXR3TR.js.map
|