@substrat-run/control-plane-api 0.180.0 → 0.184.0
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/api.d.ts.map +1 -1
- package/dist/api.js +67 -3
- package/dist/api.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/metered-usage-days.d.ts +66 -0
- package/dist/metered-usage-days.d.ts.map +1 -0
- package/dist/metered-usage-days.js +82 -0
- package/dist/metered-usage-days.js.map +1 -0
- package/dist/platform-drain.d.ts +4 -2
- package/dist/platform-drain.d.ts.map +1 -1
- package/dist/platform-drain.js +8 -11
- package/dist/platform-drain.js.map +1 -1
- package/dist/source-builds.d.ts +10 -0
- package/dist/source-builds.d.ts.map +1 -1
- package/dist/source-builds.js +34 -5
- package/dist/source-builds.js.map +1 -1
- package/dist/staff-client.d.ts +2 -1
- package/dist/staff-client.d.ts.map +1 -1
- package/dist/staff-client.js +1 -0
- package/dist/staff-client.js.map +1 -1
- package/package.json +9 -9
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,kBAAkB,EAAoB,MAAM,yBAAyB,CAAC;AACjI,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { sourceBuildRequest } from '@substrat-run/contracts';
|
|
2
|
+
import { SourceBuildInterrupted } from './source-builds.js';
|
|
2
3
|
import { PREVIEW_CONNECTIONS_REFUSAL } from './connection-relay.js';
|
|
3
4
|
import { bindingChangeRefusal, bindingOptionsRefusal, connectionBindingOptions, refusesBindingChange } from './connection-binding-options.js';
|
|
4
5
|
import { resolveObservabilityWindow } from './observability-window.js';
|
|
5
6
|
import { Hono } from 'hono';
|
|
6
|
-
import { permissionKey, parseHostname, withLabel, RESERVED_LABEL_SEPARATOR, adminAction, lakeEventsInput, ownerTransferInput, memberInviteInput, memberRoleInput, ASSET_PART_PREFIX, assetHash, STORE_DRIVERS, storeDriverErasesSubjects, storeDriverServesVertical, storeCatalogOperation, storeDriverBasisAdmits, channelName, connectLinkId, connectionActivity, connectionActivitySource, connectionCredential, connectionCertificate, connectionFilter, connectionHealthState, connectionProvider, connectorDispatchKind, PROVISION_SIBLING_KIND, ARCHIVE_SCOPE_KIND, PROVISION_TENANT_KIND, SET_ENTITLEMENTS_KIND, MODEL_USAGE_KIND, SWEEP_RUNS_KIND, toConnectionHealthEntry, CONNECTION_EXPIRY_WARNING_DAYS, CONNECTION_STALE_DAYS, connectionProbe, connectionSendTest, connectionSendTestResult, connectionSenders, createTenantInput, entitlementGrantInput, hostname as hostnameSchema, hostnameRegion, hostnameStatus, identityLink, errorCode, issueStatus, issueStatusInput, FINDINGS_LIMIT_DEFAULT, FINDINGS_LIMIT_MAX, findingCursorOf, findingKind, findingRuleInput, findingStatus, findingStatusInput, listPageQuery, matchesOutboundHost, pageOf, platformRequestFilter, principalId as principalIdSchema, impersonationStamp, promotionAcknowledgement, bindAcknowledgement, rebindAcknowledgement, provisionableJurisdiction, publishVersionInput, queryScopeInput, readScopeTableInput, entityHistoryInput, eventFacetInput, eventCauseInput, eventEffectsInput, invocationEventsInput, deadLettersInput, lifecycleFlowInput, operationSeriesCount, operationSeriesInput, delegatedReadParams, createOrgInput, roleKey as roleKeySchema, peerSwitch, verticalSlug, scopeText, systemSwitch, DEFAULT_DENIAL_LIMIT, DENIAL_LIMIT_MAX, denialGroupBy, registerVerticalInput, platformScriptCollision, platformScriptRefusal, PLATFORM_SCRIPT_NAMES, serviceDimensions, sweepRunKind, sweepRunOutcome, scopeDump, mergeDumpPages, dataSubjectId as dataSubjectIdSchema, scopeId as scopeIdSchema, scopeStatus, requestRollupReading, meterDaysReading, verticalOwnersReading, utcDay, storageShape, surfaceName, tenantId as tenantIdSchema, tenantStatus, versionOrigin, z, PROBLEM_CONTENT_TYPE, toProblem, validationIssuesFrom, redrainEventsInput, importCursorMove, importCursorAcknowledgementMissing, REDRAIN_BATCH, migrationsOnTop, substratError, errorCodeOf, envVarSpec, capabilityFilterQuery, capabilityId as capabilityIdSchema, PLATFORM_FEATURES_HEADER, PLATFORM_FEATURE_SCOPE_SWEEPER, PLATFORM_FEATURE_SOURCE_BUILDS, SOCIAL_RELAY_VERTICALS, isVerticalConnectorProvider, } from '@substrat-run/contracts';
|
|
7
|
+
import { permissionKey, parseHostname, withLabel, RESERVED_LABEL_SEPARATOR, adminAction, lakeEventsInput, ownerTransferInput, memberInviteInput, memberRoleInput, ASSET_PART_PREFIX, assetHash, STORE_DRIVERS, storeDriverErasesSubjects, storeDriverServesVertical, storeCatalogOperation, storeDriverBasisAdmits, channelName, connectLinkId, connectionActivity, connectionActivitySource, connectionCredential, connectionCertificate, connectionFilter, connectionHealthState, connectionProvider, connectorDispatchKind, PROVISION_SIBLING_KIND, ARCHIVE_SCOPE_KIND, PROVISION_TENANT_KIND, SET_ENTITLEMENTS_KIND, MODEL_USAGE_KIND, SWEEP_RUNS_KIND, toConnectionHealthEntry, CONNECTION_EXPIRY_WARNING_DAYS, CONNECTION_STALE_DAYS, connectionProbe, connectionSendTest, connectionSendTestResult, connectionSenders, createTenantInput, entitlementGrantInput, hostname as hostnameSchema, hostnameRegion, hostnameStatus, identityLink, errorCode, issueStatus, issueStatusInput, FINDINGS_LIMIT_DEFAULT, FINDINGS_LIMIT_MAX, findingCursorOf, findingKind, findingRuleInput, findingStatus, findingStatusInput, listPageQuery, matchesOutboundHost, pageOf, platformRequestFilter, principalId as principalIdSchema, impersonationStamp, promotionAcknowledgement, bindAcknowledgement, rebindAcknowledgement, provisionableJurisdiction, publishVersionInput, queryScopeInput, readScopeTableInput, entityHistoryInput, eventFacetInput, eventCauseInput, eventEffectsInput, invocationEventsInput, deadLettersInput, lifecycleFlowInput, operationSeriesCount, operationSeriesInput, delegatedReadParams, createOrgInput, roleKey as roleKeySchema, peerSwitch, verticalSlug, scopeText, systemSwitch, DEFAULT_DENIAL_LIMIT, DENIAL_LIMIT_MAX, denialGroupBy, registerVerticalInput, platformScriptCollision, platformScriptRefusal, PLATFORM_SCRIPT_NAMES, serviceDimensions, sweepRunKind, sweepRunOutcome, scopeDump, mergeDumpPages, dataSubjectId as dataSubjectIdSchema, scopeId as scopeIdSchema, scopeStatus, requestRollupReading, meterDaysReading, verticalOwnersReading, utcDay, storageShape, surfaceName, modelUsageLine, tenantId as tenantIdSchema, tenantStatus, versionOrigin, z, PROBLEM_CONTENT_TYPE, toProblem, validationIssuesFrom, redrainEventsInput, importCursorMove, importCursorAcknowledgementMissing, REDRAIN_BATCH, migrationsOnTop, substratError, errorCodeOf, envVarSpec, capabilityFilterQuery, capabilityId as capabilityIdSchema, PLATFORM_FEATURES_HEADER, PLATFORM_FEATURE_SCOPE_SWEEPER, PLATFORM_FEATURE_SOURCE_BUILDS, SOCIAL_RELAY_VERTICALS, isVerticalConnectorProvider, } from '@substrat-run/contracts';
|
|
7
8
|
import { upstreamHandleIn, upstreamReferenceOf, withUpstreamReference } from '@substrat-run/contracts';
|
|
8
9
|
import { ENGINE_ENTITLEMENT_KEYS, bareSlug, declarableEntitlementKey, entitlementNamespaceRefusal, grantableEntitlements } from '@substrat-run/contracts';
|
|
9
10
|
import { SCOPE_COPY_LEASE_MS, copyRestoreFence, publishedMigrationDigest, replayStoreErasures } from '@substrat-run/kernel';
|
|
10
11
|
import { attributeFailure } from './failure-attribution.js';
|
|
11
12
|
import { auditedChange, withAuditedOutcomes } from './audited-change.js';
|
|
12
|
-
import { BIND_EXPORT_BREAK_REFUSAL, CARRIED_AWAY_KEY, bindExportBreakRefusal, carriedAwayDump, dumpMetaValue, metaValueIn, crossVerticalHealth, exportBreakRefusal, isBindExportBreakRefusal, isExportBreakRefusal, listedPromoteRefusal, isExportBreakUnjudged, isPrimaryScope, promoteReviewDigest, rebindReviewDigest, assertRebindReviewCurrent, migrationProgress, ulid, auditWarningOf, REQUEST_ROLLUP_LIMIT_DEFAULT, REQUEST_ROLLUP_LIMIT_MAX, STORAGE_GAUGE_RETENTION_MONTHS, MODEL_USAGE_RETENTION_DAYS, BILLING_ROLLUP_RETENTION_MONTHS, METER_DAYS_LIMIT_DEFAULT, METER_DAYS_LIMIT_MAX, releaseRolesAskScopes, releaseRoleSetRefusal, withheldOpsFailure, } from '@substrat-run/kernel';
|
|
13
|
+
import { BIND_EXPORT_BREAK_REFUSAL, CARRIED_AWAY_KEY, bindExportBreakRefusal, carriedAwayDump, dumpMetaValue, metaValueIn, crossVerticalHealth, exportBreakRefusal, isBindExportBreakRefusal, isExportBreakRefusal, listedPromoteRefusal, isExportBreakUnjudged, isPrimaryScope, promoteReviewDigest, rebindReviewDigest, assertRebindReviewCurrent, migrationProgress, ulid, auditWarningOf, REQUEST_ROLLUP_LIMIT_DEFAULT, REQUEST_ROLLUP_LIMIT_MAX, STORAGE_HISTORY_LIMIT_MAX, STORAGE_GAUGE_RETENTION_MONTHS, MODEL_USAGE_RETENTION_DAYS, BILLING_ROLLUP_RETENTION_MONTHS, METER_DAYS_LIMIT_DEFAULT, METER_DAYS_LIMIT_MAX, releaseRolesAskScopes, releaseRoleSetRefusal, withheldOpsFailure, } from '@substrat-run/kernel';
|
|
13
14
|
import { TENANT_HEADER, confinedTenant } from './auth.js';
|
|
14
15
|
import { mintTenantToken } from './tenant-token.js';
|
|
15
16
|
import { abandonCopy, beginTransfer, connectionGrantsForScope, transferScope, isScopeNotHeld, notHeldIsBenign } from './vertical-client.js';
|
|
@@ -77,6 +78,7 @@ import { wireSettingsRefusal, wireUploadFor } from './wire-upload.js';
|
|
|
77
78
|
import { parseWireWalkCursor, runWireWalk, WIRE_WALK_LIMIT_DEFAULT, WIRE_WALK_LIMIT_MAX, WIRE_WALK_RELEASE_MAX, } from './wire-walk.js';
|
|
78
79
|
import { wireKeyDropSince, wireReadinessReport, WIRE_READINESS_LIMIT_DEFAULT, WIRE_READINESS_LIMIT_MAX } from './wire-readiness.js';
|
|
79
80
|
import { STORAGE_PAGE_DEFAULT, STORAGE_PAGE_MAX, readStoragePage } from './storage-meter.js';
|
|
81
|
+
import { usageDays, utcDaysBetween } from './metered-usage-days.js';
|
|
80
82
|
import { queryLakeEvents, teamWindowRefusal } from './lake-gateway.js';
|
|
81
83
|
import { LakeQueryError } from './r2-sql-engine.js';
|
|
82
84
|
import { isCustomHostname, validateBindableHostname, } from './custom-hostnames.js';
|
|
@@ -725,6 +727,11 @@ const modelUsageQuery = z.object({
|
|
|
725
727
|
...listPageQuery.shape,
|
|
726
728
|
});
|
|
727
729
|
/** The summary window: a half-open `[since, until)`; defaults to the current calendar month so far. */
|
|
730
|
+
/**
|
|
731
|
+
* One line for a model call no drain carries (`POST /model-usage`). `requestId` is the ledger's
|
|
732
|
+
* dedupe key, so the caller names it from its own unit of work and a retry writes nothing.
|
|
733
|
+
*/
|
|
734
|
+
const modelUsageRecord = z.object({ requestId: z.string().min(1).max(128), line: modelUsageLine }).strict();
|
|
728
735
|
const modelUsageSummaryQuery = z.object({
|
|
729
736
|
tenantId: tenantIdSchema.optional(),
|
|
730
737
|
since: z.string().optional(),
|
|
@@ -1813,6 +1820,7 @@ export function createControlPlaneApi(options) {
|
|
|
1813
1820
|
coveredDays: 0, totalDays: 30, sinceDay: since, untilDay: through,
|
|
1814
1821
|
lastReadAt: null, byVertical: [], breakdownTruncated: false,
|
|
1815
1822
|
};
|
|
1823
|
+
let requestDays = null;
|
|
1816
1824
|
if (usageNow() < deadline && admin.listTenantRequestMeter && admin.listRequestMeterDays) {
|
|
1817
1825
|
const [rows, days] = await Promise.all([
|
|
1818
1826
|
admin.listTenantRequestMeter(actor, tenantId, since, through, REQUEST_ROLLUP_LIMIT_MAX),
|
|
@@ -1821,6 +1829,7 @@ export function createControlPlaneApi(options) {
|
|
|
1821
1829
|
const covered = days.filter((d) => d.readAt !== null && !d.saturated);
|
|
1822
1830
|
const coveredDaySet = new Set(covered.map((day) => day.day));
|
|
1823
1831
|
const clipped = rows.length === REQUEST_ROLLUP_LIMIT_MAX;
|
|
1832
|
+
requestDays = { rows: rows.slice(0, REQUEST_ROLLUP_LIMIT_MAX - 1), covered: coveredDaySet, clipped };
|
|
1824
1833
|
const groups = new Map();
|
|
1825
1834
|
let count = 0;
|
|
1826
1835
|
let countedRows = 0;
|
|
@@ -1862,6 +1871,7 @@ export function createControlPlaneApi(options) {
|
|
|
1862
1871
|
let truncatedReason = null;
|
|
1863
1872
|
let modelSkipped = false;
|
|
1864
1873
|
let labelsTruncated = false;
|
|
1874
|
+
const modelDayRows = [];
|
|
1865
1875
|
const earlier = (a, b) => a === null || b < a ? b : a;
|
|
1866
1876
|
const later = (a, b) => a === null || b > a ? b : a;
|
|
1867
1877
|
if (typeof admin.listTenantModelUsageMeter === 'function') {
|
|
@@ -1879,6 +1889,10 @@ export function createControlPlaneApi(options) {
|
|
|
1879
1889
|
const entries = await admin.listTenantModelUsageMeter(actor, { tenantId, since: `${since}T00:00:00Z`, until: `${until}T00:00:00Z`, limit: 501, ...(cursor ? { cursor } : {}) });
|
|
1880
1890
|
for (const entry of entries.slice(0, 500)) {
|
|
1881
1891
|
calls++;
|
|
1892
|
+
modelDayRows.push({
|
|
1893
|
+
day: entry.at.slice(0, 10), vertical: entry.labelTruncated ? null : entry.vertical,
|
|
1894
|
+
reported: entry.reported, tokens: entry.inputTokens + entry.outputTokens,
|
|
1895
|
+
});
|
|
1882
1896
|
if (entry.reported) {
|
|
1883
1897
|
reportedCalls++;
|
|
1884
1898
|
inputTokens += entry.inputTokens;
|
|
@@ -1924,12 +1938,26 @@ export function createControlPlaneApi(options) {
|
|
|
1924
1938
|
byVerticalModel: modelGroups.slice(0, 50).map((row) => ({ vertical: row.vertical, model: row.model, calls: row.calls, reportedCalls: row.reportedCalls, inputTokens: row.reportedCalls > 0 ? row.inputTokens : null, outputTokens: row.reportedCalls > 0 ? row.outputTokens : null })),
|
|
1925
1939
|
breakdownTruncated: modelGroups.length > 50 || labelsTruncated,
|
|
1926
1940
|
};
|
|
1941
|
+
// Scopes sort before days in this read, so a capped one is missing whole scopes from every
|
|
1942
|
+
// day. That makes each day a low number with no way to mark which, so the series is dropped.
|
|
1943
|
+
let storageDays = null;
|
|
1944
|
+
if (usageNow() < deadline && admin.listScopeStorage) {
|
|
1945
|
+
const rows = await admin.listScopeStorage(actor, { tenantId, since, until: through, limit: STORAGE_HISTORY_LIMIT_MAX });
|
|
1946
|
+
if (rows.length < STORAGE_HISTORY_LIMIT_MAX)
|
|
1947
|
+
storageDays = { rows };
|
|
1948
|
+
}
|
|
1949
|
+
const hasModelLedger = typeof admin.listTenantModelUsageMeter === 'function' && !modelSkipped;
|
|
1927
1950
|
return c.json({
|
|
1928
1951
|
readAt,
|
|
1929
1952
|
retention: { storageMonths: STORAGE_GAUGE_RETENTION_MONTHS, modelDays: MODEL_USAGE_RETENTION_DAYS, requestMonths: BILLING_ROLLUP_RETENTION_MONTHS },
|
|
1930
1953
|
storage,
|
|
1931
1954
|
requests,
|
|
1932
1955
|
models,
|
|
1956
|
+
days: usageDays(utcDaysBetween(since, through), {
|
|
1957
|
+
requests: requestDays,
|
|
1958
|
+
models: hasModelLedger ? { rows: modelDayRows, truncated } : null,
|
|
1959
|
+
storage: storageDays,
|
|
1960
|
+
}),
|
|
1933
1961
|
});
|
|
1934
1962
|
});
|
|
1935
1963
|
app.put('/tenants/:tenantId/entitlements/:key', async (c) => {
|
|
@@ -8753,7 +8781,20 @@ export function createControlPlaneApi(options) {
|
|
|
8753
8781
|
requestedVersion = input.version;
|
|
8754
8782
|
const building = options.sourceBuilds.build(sourceTenant ?? 'platform', sourceSlug, input);
|
|
8755
8783
|
input = undefined;
|
|
8756
|
-
|
|
8784
|
+
try {
|
|
8785
|
+
built = await building;
|
|
8786
|
+
}
|
|
8787
|
+
catch (e) {
|
|
8788
|
+
// #2931: the runtime's own text is the only record of why, and it is unreviewed, so it goes
|
|
8789
|
+
// on staff's row under the request id the caller was shown. onError answers the throw.
|
|
8790
|
+
if (e instanceof SourceBuildInterrupted) {
|
|
8791
|
+
recordWithheld({
|
|
8792
|
+
actor: c.get('actor'), operation: 'deploy.build', stage: 'interrupted', vertical: sourceSlug,
|
|
8793
|
+
tenantId: sourceTenant, scopeId: null, status: e.status, reference: referenceOf(c),
|
|
8794
|
+
}, e.diagnostic, e.message, e);
|
|
8795
|
+
}
|
|
8796
|
+
throw e;
|
|
8797
|
+
}
|
|
8757
8798
|
form = built.form;
|
|
8758
8799
|
// Addressing is the authenticated caller's, never a field emitted by project code.
|
|
8759
8800
|
form.delete('tenant');
|
|
@@ -11320,6 +11361,16 @@ export function createControlPlaneApi(options) {
|
|
|
11320
11361
|
const turn = await options.builderTurns.get(c.req.param('turnId'));
|
|
11321
11362
|
return turn ? c.json(turn) : refuse(c, 'not_found', 'no such turn');
|
|
11322
11363
|
});
|
|
11364
|
+
// -- source build records (#2931): how far one build got, and what stopped it ---
|
|
11365
|
+
// Staff only, as the turns above are: a record carries what a tenant's build printed.
|
|
11366
|
+
app.get('/builder-builds/:tenantId/:buildId', async (c) => {
|
|
11367
|
+
if (!staffCaller(c))
|
|
11368
|
+
return refuse(c, 'forbidden', 'forbidden');
|
|
11369
|
+
if (!options.sourceBuilds)
|
|
11370
|
+
return refuseStatus(c, 501, 'source builds are not configured');
|
|
11371
|
+
const record = await options.sourceBuilds.record(c.req.param('tenantId'), c.req.param('buildId'));
|
|
11372
|
+
return record ? c.json(record) : refuse(c, 'not_found', 'no such build');
|
|
11373
|
+
});
|
|
11323
11374
|
// -- sweep runs (#1232): the durable record of what a sweep pass touched -------
|
|
11324
11375
|
// Staff read fleet-wide (the console's later view); a builder's tenant is forced
|
|
11325
11376
|
// from the principal, the /ops-failures posture exactly.
|
|
@@ -11485,6 +11536,19 @@ export function createControlPlaneApi(options) {
|
|
|
11485
11536
|
const entries = await c.var.admin.listModelUsage(c.get('actor'), filter);
|
|
11486
11537
|
return c.json(pageOf(entries, filter.limit, (e) => e.id));
|
|
11487
11538
|
});
|
|
11539
|
+
// The door for a model call that runs in no tenant's scope, so no intent can carry it to the
|
|
11540
|
+
// drain: a builder turn runs in the studio's own scope and is spent on the tenant's behalf.
|
|
11541
|
+
// Staff only, on neither allowlist: this writes a bill, so a tenant cannot reach it, and a
|
|
11542
|
+
// line for a tenant the directory does not hold has nobody to reconcile against.
|
|
11543
|
+
app.post('/model-usage', async (c) => {
|
|
11544
|
+
if (c.get('principal').kind !== 'staff')
|
|
11545
|
+
return refuse(c, 'forbidden', 'forbidden');
|
|
11546
|
+
const input = modelUsageRecord.parse(await c.req.json());
|
|
11547
|
+
if (!(await c.var.admin.getTenant(c.get('actor'), input.line.attribution.tenant))) {
|
|
11548
|
+
return refuse(c, 'not_found', 'no such tenant');
|
|
11549
|
+
}
|
|
11550
|
+
return c.json(await c.var.admin.recordModelUsage(input));
|
|
11551
|
+
});
|
|
11488
11552
|
// Folded per (tenant, vertical, model) with the platform's margin applied at read
|
|
11489
11553
|
// time. Nothing is stored by the read: D-30's "meter, don't bill" holds.
|
|
11490
11554
|
app.get('/model-usage/summary', async (c) => {
|