@runcore-sh/runcore 0.1.8 → 0.1.10
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/access/manifest.d.ts +59 -0
- package/dist/access/manifest.d.ts.map +1 -0
- package/dist/access/manifest.js +251 -0
- package/dist/access/manifest.js.map +1 -0
- package/dist/activity/log.d.ts +1 -1
- package/dist/activity/log.d.ts.map +1 -1
- package/dist/agents/autonomous.d.ts.map +1 -1
- package/dist/agents/autonomous.js +38 -0
- package/dist/agents/autonomous.js.map +1 -1
- package/dist/agents/governance.d.ts +70 -0
- package/dist/agents/governance.d.ts.map +1 -0
- package/dist/agents/governance.js +220 -0
- package/dist/agents/governance.js.map +1 -0
- package/dist/agents/governed-spawn.d.ts +83 -0
- package/dist/agents/governed-spawn.d.ts.map +1 -0
- package/dist/agents/governed-spawn.js +186 -0
- package/dist/agents/governed-spawn.js.map +1 -0
- package/dist/agents/heartbeat.d.ts +91 -0
- package/dist/agents/heartbeat.d.ts.map +1 -0
- package/dist/agents/heartbeat.js +323 -0
- package/dist/agents/heartbeat.js.map +1 -0
- package/dist/agents/index.d.ts +4 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +6 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/spawn-policy.d.ts +45 -0
- package/dist/agents/spawn-policy.d.ts.map +1 -0
- package/dist/agents/spawn-policy.js +202 -0
- package/dist/agents/spawn-policy.js.map +1 -0
- package/dist/alert.d.ts +16 -0
- package/dist/alert.d.ts.map +1 -0
- package/dist/alert.js +70 -0
- package/dist/alert.js.map +1 -0
- package/dist/cli.js +261 -32
- package/dist/cli.js.map +1 -1
- package/dist/credentials/store.d.ts +1 -1
- package/dist/credentials/store.d.ts.map +1 -1
- package/dist/credentials/store.js +14 -3
- package/dist/credentials/store.js.map +1 -1
- package/dist/crystallizer.d.ts +56 -0
- package/dist/crystallizer.d.ts.map +1 -0
- package/dist/crystallizer.js +159 -0
- package/dist/crystallizer.js.map +1 -0
- package/dist/distiller.d.ts +48 -0
- package/dist/distiller.d.ts.map +1 -0
- package/dist/distiller.js +140 -0
- package/dist/distiller.js.map +1 -0
- package/dist/files/deep-index.d.ts +59 -0
- package/dist/files/deep-index.d.ts.map +1 -0
- package/dist/files/deep-index.js +337 -0
- package/dist/files/deep-index.js.map +1 -0
- package/dist/files/import.d.ts +44 -0
- package/dist/files/import.d.ts.map +1 -0
- package/dist/files/import.js +213 -0
- package/dist/files/import.js.map +1 -0
- package/dist/files/index-local.d.ts +37 -0
- package/dist/files/index-local.d.ts.map +1 -0
- package/dist/files/index-local.js +198 -0
- package/dist/files/index-local.js.map +1 -0
- package/dist/google/auth.d.ts +2 -0
- package/dist/google/auth.d.ts.map +1 -1
- package/dist/google/auth.js +2 -0
- package/dist/google/auth.js.map +1 -1
- package/dist/integrations/gate.d.ts +40 -0
- package/dist/integrations/gate.d.ts.map +1 -0
- package/dist/integrations/gate.js +100 -0
- package/dist/integrations/gate.js.map +1 -0
- package/dist/lib/audit.d.ts +43 -0
- package/dist/lib/audit.d.ts.map +1 -0
- package/dist/lib/audit.js +120 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/brain-io.d.ts.map +1 -1
- package/dist/lib/brain-io.js +52 -0
- package/dist/lib/brain-io.js.map +1 -1
- package/dist/lib/dpapi.d.ts +14 -0
- package/dist/lib/dpapi.d.ts.map +1 -0
- package/dist/lib/dpapi.js +104 -0
- package/dist/lib/dpapi.js.map +1 -0
- package/dist/lib/glob-match.d.ts +22 -0
- package/dist/lib/glob-match.d.ts.map +1 -0
- package/dist/lib/glob-match.js +64 -0
- package/dist/lib/glob-match.js.map +1 -0
- package/dist/lib/locked.d.ts +40 -0
- package/dist/lib/locked.d.ts.map +1 -0
- package/dist/lib/locked.js +130 -0
- package/dist/lib/locked.js.map +1 -0
- package/dist/llm/complete.d.ts.map +1 -1
- package/dist/llm/complete.js +5 -2
- package/dist/llm/complete.js.map +1 -1
- package/dist/llm/fetch-guard.d.ts +16 -0
- package/dist/llm/fetch-guard.d.ts.map +1 -0
- package/dist/llm/fetch-guard.js +61 -0
- package/dist/llm/fetch-guard.js.map +1 -0
- package/dist/llm/guard.d.ts +40 -0
- package/dist/llm/guard.d.ts.map +1 -0
- package/dist/llm/guard.js +88 -0
- package/dist/llm/guard.js.map +1 -0
- package/dist/llm/membrane.d.ts +46 -0
- package/dist/llm/membrane.d.ts.map +1 -0
- package/dist/llm/membrane.js +123 -0
- package/dist/llm/membrane.js.map +1 -0
- package/dist/llm/providers/index.d.ts +5 -1
- package/dist/llm/providers/index.d.ts.map +1 -1
- package/dist/llm/providers/index.js +8 -1
- package/dist/llm/providers/index.js.map +1 -1
- package/dist/llm/redact.d.ts +39 -0
- package/dist/llm/redact.d.ts.map +1 -0
- package/dist/llm/redact.js +155 -0
- package/dist/llm/redact.js.map +1 -0
- package/dist/llm/sensitive-registry.d.ts +33 -0
- package/dist/llm/sensitive-registry.d.ts.map +1 -0
- package/dist/llm/sensitive-registry.js +106 -0
- package/dist/llm/sensitive-registry.js.map +1 -0
- package/dist/mcp-server.d.ts +11 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +520 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mdns.d.ts +17 -0
- package/dist/mdns.d.ts.map +1 -0
- package/dist/mdns.js +110 -0
- package/dist/mdns.js.map +1 -0
- package/dist/nerve/push.d.ts +26 -0
- package/dist/nerve/push.d.ts.map +1 -0
- package/dist/nerve/push.js +170 -0
- package/dist/nerve/push.js.map +1 -0
- package/dist/nerve/state.d.ts +35 -0
- package/dist/nerve/state.d.ts.map +1 -0
- package/dist/nerve/state.js +257 -0
- package/dist/nerve/state.js.map +1 -0
- package/dist/posture/engine.d.ts +41 -0
- package/dist/posture/engine.d.ts.map +1 -0
- package/dist/posture/engine.js +217 -0
- package/dist/posture/engine.js.map +1 -0
- package/dist/posture/index.d.ts +11 -0
- package/dist/posture/index.d.ts.map +1 -0
- package/dist/posture/index.js +10 -0
- package/dist/posture/index.js.map +1 -0
- package/dist/posture/middleware.d.ts +30 -0
- package/dist/posture/middleware.d.ts.map +1 -0
- package/dist/posture/middleware.js +92 -0
- package/dist/posture/middleware.js.map +1 -0
- package/dist/posture/types.d.ts +61 -0
- package/dist/posture/types.d.ts.map +1 -0
- package/dist/posture/types.js +48 -0
- package/dist/posture/types.js.map +1 -0
- package/dist/resend/inbox.d.ts +23 -0
- package/dist/resend/inbox.d.ts.map +1 -0
- package/dist/resend/inbox.js +198 -0
- package/dist/resend/inbox.js.map +1 -0
- package/dist/resend/webhooks.d.ts +30 -0
- package/dist/resend/webhooks.d.ts.map +1 -0
- package/dist/resend/webhooks.js +244 -0
- package/dist/resend/webhooks.js.map +1 -0
- package/dist/server.d.ts +5 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +773 -58
- package/dist/server.js.map +1 -1
- package/dist/settings.d.ts +14 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +32 -1
- package/dist/settings.js.map +1 -1
- package/dist/tier/bond.d.ts +51 -0
- package/dist/tier/bond.d.ts.map +1 -0
- package/dist/tier/bond.js +154 -0
- package/dist/tier/bond.js.map +1 -0
- package/dist/tier/freeze.d.ts +21 -0
- package/dist/tier/freeze.d.ts.map +1 -0
- package/dist/tier/freeze.js +73 -0
- package/dist/tier/freeze.js.map +1 -0
- package/dist/tier/gate.d.ts +11 -0
- package/dist/tier/gate.d.ts.map +1 -0
- package/dist/tier/gate.js +25 -0
- package/dist/tier/gate.js.map +1 -0
- package/dist/tier/heartbeat.d.ts +22 -0
- package/dist/tier/heartbeat.d.ts.map +1 -0
- package/dist/tier/heartbeat.js +128 -0
- package/dist/tier/heartbeat.js.map +1 -0
- package/dist/tier/token.d.ts +22 -0
- package/dist/tier/token.d.ts.map +1 -0
- package/dist/tier/token.js +100 -0
- package/dist/tier/token.js.map +1 -0
- package/dist/tier/types.d.ts +44 -0
- package/dist/tier/types.d.ts.map +1 -0
- package/dist/tier/types.js +61 -0
- package/dist/tier/types.js.map +1 -0
- package/dist/updater.d.ts +32 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +145 -0
- package/dist/updater.js.map +1 -0
- package/dist/vault/policy.d.ts +42 -0
- package/dist/vault/policy.d.ts.map +1 -0
- package/dist/vault/policy.js +159 -0
- package/dist/vault/policy.js.map +1 -0
- package/dist/vault/store.d.ts +6 -0
- package/dist/vault/store.d.ts.map +1 -1
- package/dist/vault/store.js +15 -5
- package/dist/vault/store.js.map +1 -1
- package/dist/vault/transfer.d.ts +33 -0
- package/dist/vault/transfer.d.ts.map +1 -0
- package/dist/vault/transfer.js +187 -0
- package/dist/vault/transfer.js.map +1 -0
- package/dist/voucher.d.ts +39 -0
- package/dist/voucher.d.ts.map +1 -0
- package/dist/voucher.js +105 -0
- package/dist/voucher.js.map +1 -0
- package/dist/webhooks/handlers.d.ts +10 -0
- package/dist/webhooks/handlers.d.ts.map +1 -1
- package/dist/webhooks/handlers.js +53 -0
- package/dist/webhooks/handlers.js.map +1 -1
- package/dist/webhooks/index.d.ts +2 -2
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/index.js +2 -2
- package/dist/webhooks/index.js.map +1 -1
- package/dist/webhooks/verify.d.ts +8 -0
- package/dist/webhooks/verify.d.ts.map +1 -1
- package/dist/webhooks/verify.js +56 -0
- package/dist/webhooks/verify.js.map +1 -1
- package/package.json +8 -2
- package/public/board.html +8 -3
- package/public/browser.html +8 -3
- package/public/library.html +8 -3
- package/public/observatory.html +8 -3
- package/public/ops.html +8 -3
- package/public/registry.html +627 -0
- package/public/roadmap.html +975 -0
package/dist/settings.d.ts
CHANGED
|
@@ -46,10 +46,21 @@ export interface MeshConfig {
|
|
|
46
46
|
/** Allow incoming mesh connections from discovered peers. */
|
|
47
47
|
allowIncoming: boolean;
|
|
48
48
|
}
|
|
49
|
+
export interface IntegrationSettings {
|
|
50
|
+
/** Master kill switch. false = no secrets hydrated, full air-gap. */
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
/** Per-service toggles. Unlisted services default to enabled. */
|
|
53
|
+
services?: Record<string, boolean>;
|
|
54
|
+
}
|
|
49
55
|
export interface CoreSettings {
|
|
50
56
|
/** Display name for this instance. Default: "Core". */
|
|
51
57
|
instanceName?: string;
|
|
52
58
|
airplaneMode: boolean;
|
|
59
|
+
/** Hard network isolation. When true, ALL outbound LLM API calls are blocked
|
|
60
|
+
* at the request layer — only local providers (Ollama) are allowed.
|
|
61
|
+
* Unlike airplaneMode (which just swaps the provider), this enforces the block
|
|
62
|
+
* even if code explicitly requests a cloud provider. */
|
|
63
|
+
privateMode: boolean;
|
|
53
64
|
/** Explicit provider override. When set, takes precedence over airplaneMode. */
|
|
54
65
|
provider?: ProviderName;
|
|
55
66
|
models: {
|
|
@@ -69,6 +80,8 @@ export interface CoreSettings {
|
|
|
69
80
|
pulse: PulseSettings;
|
|
70
81
|
mesh: MeshConfig;
|
|
71
82
|
visualMemory?: VisualMemoryConfig;
|
|
83
|
+
/** Integration gate — master switch + per-service toggles. */
|
|
84
|
+
integrations?: IntegrationSettings;
|
|
72
85
|
}
|
|
73
86
|
/** @deprecated Use CoreSettings instead. */
|
|
74
87
|
export type DashSettings = CoreSettings;
|
|
@@ -84,7 +97,7 @@ export declare function saveSettings(s: DashSettings): Promise<void>;
|
|
|
84
97
|
export declare function getSettings(): CoreSettings;
|
|
85
98
|
/** Merge partial updates, save to disk, update cache. Returns the new settings. */
|
|
86
99
|
export declare function updateSettings(partial: Partial<CoreSettings>): Promise<CoreSettings>;
|
|
87
|
-
/** Returns the active provider.
|
|
100
|
+
/** Returns the active provider. privateMode and master integration kill switch force Ollama. */
|
|
88
101
|
export declare function resolveProvider(): ProviderName;
|
|
89
102
|
/**
|
|
90
103
|
* Returns the chat (streaming) model string, or undefined for "auto"
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAU7D,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,SAAS,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB;iFAC6E;IAC7E,WAAW,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C;6FACyF;IACzF,iBAAiB,EAAE,OAAO,CAAC;IAC3B;+FAC2F;IAC3F,YAAY,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,CAAC,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.js
CHANGED
|
@@ -12,6 +12,7 @@ const SETTINGS_PATH = join(process.cwd(), "brain", "settings.json");
|
|
|
12
12
|
const DEFAULTS = {
|
|
13
13
|
instanceName: "Core",
|
|
14
14
|
airplaneMode: false,
|
|
15
|
+
privateMode: false,
|
|
15
16
|
models: { chat: "auto", utility: "auto" },
|
|
16
17
|
encryptBrainFiles: true,
|
|
17
18
|
safeWordMode: "always",
|
|
@@ -44,6 +45,7 @@ export async function loadSettings() {
|
|
|
44
45
|
const validProviders = ["openrouter", "anthropic", "openai", "ollama"];
|
|
45
46
|
cached = {
|
|
46
47
|
airplaneMode: typeof parsed.airplaneMode === "boolean" ? parsed.airplaneMode : DEFAULTS.airplaneMode,
|
|
48
|
+
privateMode: typeof parsed.privateMode === "boolean" ? parsed.privateMode : DEFAULTS.privateMode,
|
|
47
49
|
provider: validProviders.includes(parsed.provider) ? parsed.provider : undefined,
|
|
48
50
|
models: {
|
|
49
51
|
chat: typeof parsed.models?.chat === "string" ? parsed.models.chat : DEFAULTS.models.chat,
|
|
@@ -89,6 +91,12 @@ export async function loadSettings() {
|
|
|
89
91
|
instanceName: typeof parsed.instanceName === "string" ? parsed.instanceName
|
|
90
92
|
: typeof parsed.agentName === "string" ? parsed.agentName // compat with Dash
|
|
91
93
|
: undefined,
|
|
94
|
+
integrations: parsed.integrations && typeof parsed.integrations === "object" ? {
|
|
95
|
+
enabled: typeof parsed.integrations.enabled === "boolean" ? parsed.integrations.enabled : true,
|
|
96
|
+
services: parsed.integrations.services && typeof parsed.integrations.services === "object"
|
|
97
|
+
? parsed.integrations.services
|
|
98
|
+
: undefined,
|
|
99
|
+
} : undefined,
|
|
92
100
|
};
|
|
93
101
|
}
|
|
94
102
|
catch {
|
|
@@ -101,6 +109,7 @@ export async function loadSettings() {
|
|
|
101
109
|
const useLocal = ollama.available;
|
|
102
110
|
cached = {
|
|
103
111
|
airplaneMode: useLocal,
|
|
112
|
+
privateMode: DEFAULTS.privateMode,
|
|
104
113
|
models: { ...DEFAULTS.models },
|
|
105
114
|
encryptBrainFiles: DEFAULTS.encryptBrainFiles,
|
|
106
115
|
safeWordMode: DEFAULTS.safeWordMode,
|
|
@@ -136,6 +145,9 @@ export async function updateSettings(partial) {
|
|
|
136
145
|
if (typeof partial.airplaneMode === "boolean") {
|
|
137
146
|
cached.airplaneMode = partial.airplaneMode;
|
|
138
147
|
}
|
|
148
|
+
if (typeof partial.privateMode === "boolean") {
|
|
149
|
+
cached.privateMode = partial.privateMode;
|
|
150
|
+
}
|
|
139
151
|
if (partial.provider !== undefined) {
|
|
140
152
|
cached.provider = partial.provider;
|
|
141
153
|
}
|
|
@@ -206,12 +218,31 @@ export async function updateSettings(partial) {
|
|
|
206
218
|
if (typeof partial.mesh.allowIncoming === "boolean")
|
|
207
219
|
cached.mesh.allowIncoming = partial.mesh.allowIncoming;
|
|
208
220
|
}
|
|
221
|
+
if (partial.integrations) {
|
|
222
|
+
if (!cached.integrations)
|
|
223
|
+
cached.integrations = { enabled: true };
|
|
224
|
+
if (typeof partial.integrations.enabled === "boolean") {
|
|
225
|
+
cached.integrations.enabled = partial.integrations.enabled;
|
|
226
|
+
}
|
|
227
|
+
if (partial.integrations.services && typeof partial.integrations.services === "object") {
|
|
228
|
+
cached.integrations.services = {
|
|
229
|
+
...cached.integrations.services,
|
|
230
|
+
...partial.integrations.services,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
}
|
|
209
234
|
await saveSettings(cached);
|
|
210
235
|
return cached;
|
|
211
236
|
}
|
|
212
237
|
// --- Resolvers ---
|
|
213
|
-
/** Returns the active provider.
|
|
238
|
+
/** Returns the active provider. privateMode and master integration kill switch force Ollama. */
|
|
214
239
|
export function resolveProvider() {
|
|
240
|
+
// Private mode → force local-only (hard enforcement happens in guard.ts)
|
|
241
|
+
if (cached.privateMode)
|
|
242
|
+
return "ollama";
|
|
243
|
+
// Master integration gate off → force local-only
|
|
244
|
+
if (cached.integrations?.enabled === false)
|
|
245
|
+
return "ollama";
|
|
215
246
|
if (cached.provider)
|
|
216
247
|
return cached.provider;
|
|
217
248
|
return cached.airplaneMode ? "ollama" : "openrouter";
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bond handshake — establishes trust after activation.
|
|
3
|
+
*
|
|
4
|
+
* Registration = identity ("I know who you are").
|
|
5
|
+
* Bonding = trust ("I can verify it's you").
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. `runcore activate <token>` saves the JWT locally
|
|
9
|
+
* 2. Immediately calls `bond()` — generates an Ed25519 keypair,
|
|
10
|
+
* POSTs the public key + token JTI to the registry
|
|
11
|
+
* 3. Registry stores the public key alongside the approval record
|
|
12
|
+
* 4. Admin (Dash) sees "bonded" status on next poll
|
|
13
|
+
* 5. All future signed messages between instance and registry
|
|
14
|
+
* use this keypair — freeze acks, heartbeat signatures, etc.
|
|
15
|
+
*
|
|
16
|
+
* The token is a one-time introducer. The keypair is the ongoing relationship.
|
|
17
|
+
*/
|
|
18
|
+
interface BondKeys {
|
|
19
|
+
publicKey: string;
|
|
20
|
+
privateKey: string;
|
|
21
|
+
fingerprint: string;
|
|
22
|
+
bondedAt: string;
|
|
23
|
+
}
|
|
24
|
+
/** Load existing bond keys, or null if not yet bonded. */
|
|
25
|
+
export declare function loadBondKeys(root: string): Promise<BondKeys | null>;
|
|
26
|
+
/** Check if this instance has completed bonding. */
|
|
27
|
+
export declare function isBonded(root: string): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Execute the bond handshake.
|
|
30
|
+
* Called immediately after `runcore activate <token>`.
|
|
31
|
+
*
|
|
32
|
+
* 1. Generate keypair (or load existing)
|
|
33
|
+
* 2. POST public key + JTI to registry
|
|
34
|
+
* 3. Save keys locally on success
|
|
35
|
+
*/
|
|
36
|
+
export declare function bond(root: string, jwt: string, jti: string): Promise<{
|
|
37
|
+
fingerprint: string;
|
|
38
|
+
bonded: boolean;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Sign a message with this instance's bond private key.
|
|
42
|
+
* Used for authenticated communication after bonding.
|
|
43
|
+
*/
|
|
44
|
+
export declare function signMessage(root: string, message: string): Promise<string | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Verify a message signed by another instance's bond key.
|
|
47
|
+
* Used by the registry to verify instance identity.
|
|
48
|
+
*/
|
|
49
|
+
export declare function verifyMessage(message: string, signature: string, publicKeyPem: string): boolean;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=bond.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bond.d.ts","sourceRoot":"","sources":["../../src/tier/bond.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAWH,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+BD,0DAA0D;AAC1D,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CASzE;AASD,oDAAoD;AACpD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7D;AAED;;;;;;;GAOG;AACH,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BnD;AA4BD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAQT"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bond handshake — establishes trust after activation.
|
|
3
|
+
*
|
|
4
|
+
* Registration = identity ("I know who you are").
|
|
5
|
+
* Bonding = trust ("I can verify it's you").
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. `runcore activate <token>` saves the JWT locally
|
|
9
|
+
* 2. Immediately calls `bond()` — generates an Ed25519 keypair,
|
|
10
|
+
* POSTs the public key + token JTI to the registry
|
|
11
|
+
* 3. Registry stores the public key alongside the approval record
|
|
12
|
+
* 4. Admin (Dash) sees "bonded" status on next poll
|
|
13
|
+
* 5. All future signed messages between instance and registry
|
|
14
|
+
* use this keypair — freeze acks, heartbeat signatures, etc.
|
|
15
|
+
*
|
|
16
|
+
* The token is a one-time introducer. The keypair is the ongoing relationship.
|
|
17
|
+
*/
|
|
18
|
+
import { generateKeyPairSync, createSign, createVerify } from "node:crypto";
|
|
19
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
20
|
+
import { existsSync } from "node:fs";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
import { createLogger } from "../utils/logger.js";
|
|
23
|
+
const log = createLogger("bond");
|
|
24
|
+
const REGISTRY_URL = "https://runcore.sh/api/registry";
|
|
25
|
+
const KEYS_DIR = ".core";
|
|
26
|
+
const KEYS_FILE = "bond-keys.json";
|
|
27
|
+
function keysPath(root) {
|
|
28
|
+
return join(root, "brain", KEYS_DIR, KEYS_FILE);
|
|
29
|
+
}
|
|
30
|
+
/** Generate a new Ed25519 keypair for this instance. */
|
|
31
|
+
function generateBondKeys() {
|
|
32
|
+
const { publicKey, privateKey } = generateKeyPairSync("ed25519", {
|
|
33
|
+
publicKeyEncoding: { type: "spki", format: "pem" },
|
|
34
|
+
privateKeyEncoding: { type: "pkcs8", format: "pem" },
|
|
35
|
+
});
|
|
36
|
+
// Fingerprint = first 16 chars of base64-encoded public key body
|
|
37
|
+
const pubBody = publicKey
|
|
38
|
+
.replace("-----BEGIN PUBLIC KEY-----", "")
|
|
39
|
+
.replace("-----END PUBLIC KEY-----", "")
|
|
40
|
+
.replace(/\s/g, "");
|
|
41
|
+
const fingerprint = pubBody.slice(0, 16);
|
|
42
|
+
return {
|
|
43
|
+
publicKey,
|
|
44
|
+
privateKey,
|
|
45
|
+
fingerprint,
|
|
46
|
+
bondedAt: new Date().toISOString(),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Load existing bond keys, or null if not yet bonded. */
|
|
50
|
+
export async function loadBondKeys(root) {
|
|
51
|
+
const path = keysPath(root);
|
|
52
|
+
if (!existsSync(path))
|
|
53
|
+
return null;
|
|
54
|
+
try {
|
|
55
|
+
const raw = await readFile(path, "utf-8");
|
|
56
|
+
return JSON.parse(raw);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** Save bond keys to disk. */
|
|
63
|
+
async function saveBondKeys(root, keys) {
|
|
64
|
+
const dir = join(root, "brain", KEYS_DIR);
|
|
65
|
+
await mkdir(dir, { recursive: true });
|
|
66
|
+
await writeFile(keysPath(root), JSON.stringify(keys, null, 2), "utf-8");
|
|
67
|
+
}
|
|
68
|
+
/** Check if this instance has completed bonding. */
|
|
69
|
+
export async function isBonded(root) {
|
|
70
|
+
const keys = await loadBondKeys(root);
|
|
71
|
+
return keys !== null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Execute the bond handshake.
|
|
75
|
+
* Called immediately after `runcore activate <token>`.
|
|
76
|
+
*
|
|
77
|
+
* 1. Generate keypair (or load existing)
|
|
78
|
+
* 2. POST public key + JTI to registry
|
|
79
|
+
* 3. Save keys locally on success
|
|
80
|
+
*/
|
|
81
|
+
export async function bond(root, jwt, jti) {
|
|
82
|
+
// Check for existing bond
|
|
83
|
+
let keys = await loadBondKeys(root);
|
|
84
|
+
if (keys) {
|
|
85
|
+
log.info(`Already bonded (fingerprint: ${keys.fingerprint})`);
|
|
86
|
+
// Re-announce to registry in case it missed us
|
|
87
|
+
await announceToRegistry(jwt, keys);
|
|
88
|
+
return { fingerprint: keys.fingerprint, bonded: true };
|
|
89
|
+
}
|
|
90
|
+
// Generate new keypair
|
|
91
|
+
log.info("Generating bond keypair...");
|
|
92
|
+
keys = generateBondKeys();
|
|
93
|
+
// Announce to registry
|
|
94
|
+
const success = await announceToRegistry(jwt, keys);
|
|
95
|
+
if (!success) {
|
|
96
|
+
log.warn("Bond handshake failed — will retry on next heartbeat");
|
|
97
|
+
// Save keys locally anyway — we'll retry the announcement
|
|
98
|
+
await saveBondKeys(root, keys);
|
|
99
|
+
return { fingerprint: keys.fingerprint, bonded: false };
|
|
100
|
+
}
|
|
101
|
+
// Save keys
|
|
102
|
+
await saveBondKeys(root, keys);
|
|
103
|
+
log.info(`Bonded successfully (fingerprint: ${keys.fingerprint})`);
|
|
104
|
+
return { fingerprint: keys.fingerprint, bonded: true };
|
|
105
|
+
}
|
|
106
|
+
/** POST public key to the registry bond endpoint. */
|
|
107
|
+
async function announceToRegistry(jwt, keys) {
|
|
108
|
+
try {
|
|
109
|
+
const res = await fetch(`${REGISTRY_URL}/bond`, {
|
|
110
|
+
method: "POST",
|
|
111
|
+
headers: {
|
|
112
|
+
"Content-Type": "application/json",
|
|
113
|
+
Authorization: `Bearer ${jwt}`,
|
|
114
|
+
},
|
|
115
|
+
body: JSON.stringify({
|
|
116
|
+
publicKey: keys.publicKey,
|
|
117
|
+
fingerprint: keys.fingerprint,
|
|
118
|
+
bondedAt: keys.bondedAt,
|
|
119
|
+
}),
|
|
120
|
+
signal: AbortSignal.timeout(10_000),
|
|
121
|
+
});
|
|
122
|
+
return res.ok;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Sign a message with this instance's bond private key.
|
|
130
|
+
* Used for authenticated communication after bonding.
|
|
131
|
+
*/
|
|
132
|
+
export async function signMessage(root, message) {
|
|
133
|
+
const keys = await loadBondKeys(root);
|
|
134
|
+
if (!keys)
|
|
135
|
+
return null;
|
|
136
|
+
const signer = createSign("Ed25519");
|
|
137
|
+
signer.update(message);
|
|
138
|
+
return signer.sign(keys.privateKey, "base64url");
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Verify a message signed by another instance's bond key.
|
|
142
|
+
* Used by the registry to verify instance identity.
|
|
143
|
+
*/
|
|
144
|
+
export function verifyMessage(message, signature, publicKeyPem) {
|
|
145
|
+
try {
|
|
146
|
+
const verifier = createVerify("Ed25519");
|
|
147
|
+
verifier.update(message);
|
|
148
|
+
return verifier.verify(publicKeyPem, Buffer.from(signature, "base64url"));
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=bond.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bond.js","sourceRoot":"","sources":["../../src/tier/bond.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Freeze — dormant mode for agents.
|
|
3
|
+
*
|
|
4
|
+
* When a freeze signal arrives (via heartbeat or local endpoint):
|
|
5
|
+
* 1. All agents go dormant (mid-task, mid-token — frozen, not killed)
|
|
6
|
+
* 2. Metabolic pulses pause
|
|
7
|
+
* 3. No new work starts
|
|
8
|
+
* 4. State is preserved for triage
|
|
9
|
+
*
|
|
10
|
+
* The operator then reviews the frozen field and selectively resumes.
|
|
11
|
+
*/
|
|
12
|
+
import type { FreezeSignal } from "./types.js";
|
|
13
|
+
export declare function isFrozen(): boolean;
|
|
14
|
+
export declare function getFreezeSignal(): FreezeSignal | null;
|
|
15
|
+
export declare function onFreeze(listener: (signal: FreezeSignal) => void): void;
|
|
16
|
+
export declare function onThaw(listener: () => void): void;
|
|
17
|
+
/** Freeze all agents. Called by heartbeat handler or local /api/freeze endpoint. */
|
|
18
|
+
export declare function freeze(signal: FreezeSignal, root: string): Promise<void>;
|
|
19
|
+
/** Thaw — resume operations after operator review. */
|
|
20
|
+
export declare function thaw(root: string): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=freeze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../src/tier/freeze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAEvE;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAEjD;AAED,oFAAoF;AACpF,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B9E;AAED,sDAAsD;AACtD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBtD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Freeze — dormant mode for agents.
|
|
3
|
+
*
|
|
4
|
+
* When a freeze signal arrives (via heartbeat or local endpoint):
|
|
5
|
+
* 1. All agents go dormant (mid-task, mid-token — frozen, not killed)
|
|
6
|
+
* 2. Metabolic pulses pause
|
|
7
|
+
* 3. No new work starts
|
|
8
|
+
* 4. State is preserved for triage
|
|
9
|
+
*
|
|
10
|
+
* The operator then reviews the frozen field and selectively resumes.
|
|
11
|
+
*/
|
|
12
|
+
import { appendFile } from "node:fs/promises";
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
let frozenState = null;
|
|
15
|
+
let freezeListeners = [];
|
|
16
|
+
let thawListeners = [];
|
|
17
|
+
export function isFrozen() {
|
|
18
|
+
return frozenState !== null;
|
|
19
|
+
}
|
|
20
|
+
export function getFreezeSignal() {
|
|
21
|
+
return frozenState;
|
|
22
|
+
}
|
|
23
|
+
export function onFreeze(listener) {
|
|
24
|
+
freezeListeners.push(listener);
|
|
25
|
+
}
|
|
26
|
+
export function onThaw(listener) {
|
|
27
|
+
thawListeners.push(listener);
|
|
28
|
+
}
|
|
29
|
+
/** Freeze all agents. Called by heartbeat handler or local /api/freeze endpoint. */
|
|
30
|
+
export async function freeze(signal, root) {
|
|
31
|
+
frozenState = signal;
|
|
32
|
+
// Log the freeze event
|
|
33
|
+
const entry = JSON.stringify({
|
|
34
|
+
type: "freeze",
|
|
35
|
+
...signal,
|
|
36
|
+
frozenAt: new Date().toISOString(),
|
|
37
|
+
});
|
|
38
|
+
await appendFile(join(root, "brain", "ops", "audit.jsonl"), entry + "\n").catch(() => { });
|
|
39
|
+
// Notify all listeners (agent pool, metabolic pulse, work queue)
|
|
40
|
+
for (const listener of freezeListeners) {
|
|
41
|
+
try {
|
|
42
|
+
listener(signal);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Don't let a listener failure prevent freeze
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
console.log(`\n FROZEN — ${signal.reason}`);
|
|
49
|
+
console.log(` Issued by: ${signal.issuedBy} at ${signal.issuedAt}`);
|
|
50
|
+
console.log(` All agents dormant. Awaiting operator triage.\n`);
|
|
51
|
+
}
|
|
52
|
+
/** Thaw — resume operations after operator review. */
|
|
53
|
+
export async function thaw(root) {
|
|
54
|
+
if (!frozenState)
|
|
55
|
+
return;
|
|
56
|
+
const entry = JSON.stringify({
|
|
57
|
+
type: "thaw",
|
|
58
|
+
previousFreeze: frozenState.jti,
|
|
59
|
+
thawedAt: new Date().toISOString(),
|
|
60
|
+
});
|
|
61
|
+
await appendFile(join(root, "brain", "ops", "audit.jsonl"), entry + "\n").catch(() => { });
|
|
62
|
+
frozenState = null;
|
|
63
|
+
for (const listener of thawListeners) {
|
|
64
|
+
try {
|
|
65
|
+
listener();
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Don't let a listener failure prevent thaw
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
console.log(" THAWED — operations resuming.\n");
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=freeze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../src/tier/freeze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,IAAI,WAAW,GAAwB,IAAI,CAAC;AAC5C,IAAI,eAAe,GAA0C,EAAE,CAAC;AAChE,IAAI,aAAa,GAAsB,EAAE,CAAC;AAE1C,MAAM,UAAU,QAAQ;IACtB,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,QAAwC;IAC/D,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,QAAoB;IACzC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB,EAAE,IAAY;IAC7D,WAAW,GAAG,MAAM,CAAC;IAErB,uBAAuB;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,GAAG,MAAM;QACT,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,CAAC,CAAC;IACH,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,EACzC,KAAK,GAAG,IAAI,CACb,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAElB,iEAAiE;IACjE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;AACnE,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY;IACrC,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,WAAW,CAAC,GAAG;QAC/B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,CAAC,CAAC;IACH,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,EACzC,KAAK,GAAG,IAAI,CACb,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAElB,WAAW,GAAG,IAAI,CAAC;IAEnB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,QAAQ,EAAE,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability gate — checks tier before allowing features.
|
|
3
|
+
*/
|
|
4
|
+
import { type TierName } from "./types.js";
|
|
5
|
+
export declare function meetsMinimum(current: TierName, required: TierName): boolean;
|
|
6
|
+
export declare function canServe(tier: TierName): boolean;
|
|
7
|
+
export declare function canMesh(tier: TierName): boolean;
|
|
8
|
+
export declare function canSpawn(tier: TierName): boolean;
|
|
9
|
+
export declare function canAlert(tier: TierName): boolean;
|
|
10
|
+
export declare function requireTier(current: TierName, required: TierName): void;
|
|
11
|
+
//# sourceMappingURL=gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/tier/gate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,YAAY,CAAC;AAElE,wBAAgB,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAE3E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAE/C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAMvE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability gate — checks tier before allowing features.
|
|
3
|
+
*/
|
|
4
|
+
import { TIER_LEVEL, TIER_CAPS } from "./types.js";
|
|
5
|
+
export function meetsMinimum(current, required) {
|
|
6
|
+
return TIER_LEVEL[current] >= TIER_LEVEL[required];
|
|
7
|
+
}
|
|
8
|
+
export function canServe(tier) {
|
|
9
|
+
return TIER_CAPS[tier].server;
|
|
10
|
+
}
|
|
11
|
+
export function canMesh(tier) {
|
|
12
|
+
return TIER_CAPS[tier].mesh;
|
|
13
|
+
}
|
|
14
|
+
export function canSpawn(tier) {
|
|
15
|
+
return TIER_CAPS[tier].spawning;
|
|
16
|
+
}
|
|
17
|
+
export function canAlert(tier) {
|
|
18
|
+
return TIER_CAPS[tier].alerting;
|
|
19
|
+
}
|
|
20
|
+
export function requireTier(current, required) {
|
|
21
|
+
if (!meetsMinimum(current, required)) {
|
|
22
|
+
throw new Error(`Tier "${required}" required (current: "${current}"). Run \`runcore register\` to upgrade.`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/tier/gate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAiB,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,UAAU,YAAY,CAAC,OAAiB,EAAE,QAAkB;IAChE,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAc;IACpC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAiB,EAAE,QAAkB;IAC/D,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,yBAAyB,OAAO,0CAA0C,CAC5F,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry heartbeat — periodic check-in for tier >= byok.
|
|
3
|
+
*
|
|
4
|
+
* Reports: version, tier, uptime.
|
|
5
|
+
* Receives: token validity, freeze signals.
|
|
6
|
+
* Non-blocking, best-effort. Failures are logged, not fatal.
|
|
7
|
+
*/
|
|
8
|
+
import type { TierName, FreezeSignal } from "./types.js";
|
|
9
|
+
export interface HeartbeatResponse {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
frozen?: boolean;
|
|
12
|
+
freeze?: FreezeSignal;
|
|
13
|
+
tier?: TierName;
|
|
14
|
+
}
|
|
15
|
+
export type FreezeHandler = (signal: FreezeSignal) => void;
|
|
16
|
+
export type DowngradeHandler = (newTier: TierName) => void;
|
|
17
|
+
export declare function onFreezeSignal(handler: FreezeHandler): void;
|
|
18
|
+
export declare function onTierDowngrade(handler: DowngradeHandler): void;
|
|
19
|
+
export declare function isFrozen(): boolean;
|
|
20
|
+
export declare function startHeartbeat(jwt: string, tier: TierName, root?: string): void;
|
|
21
|
+
export declare function stopHeartbeat(): void;
|
|
22
|
+
//# sourceMappingURL=heartbeat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/tier/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAWzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;AAC3D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;AAK3D,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAE/D;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAkED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAmB/E;AAkBD,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
|