@aria_asi/cli 0.2.26 → 0.2.30
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/CLIENT-ONBOARDING.md +282 -0
- package/bin/aria.js +1140 -14
- package/dist/aria-connector/src/auth-commands.d.ts +1 -0
- package/dist/aria-connector/src/auth-commands.d.ts.map +1 -1
- package/dist/aria-connector/src/auth-commands.js +89 -41
- package/dist/aria-connector/src/auth-commands.js.map +1 -1
- package/dist/aria-connector/src/chat.d.ts +3 -0
- package/dist/aria-connector/src/chat.d.ts.map +1 -1
- package/dist/aria-connector/src/chat.js +146 -8
- package/dist/aria-connector/src/chat.js.map +1 -1
- package/dist/aria-connector/src/codebase-scanner.d.ts +2 -2
- package/dist/aria-connector/src/codebase-scanner.d.ts.map +1 -1
- package/dist/aria-connector/src/codebase-scanner.js +1 -1
- package/dist/aria-connector/src/codebase-scanner.js.map +1 -1
- package/dist/aria-connector/src/config.d.ts +12 -0
- package/dist/aria-connector/src/config.d.ts.map +1 -1
- package/dist/aria-connector/src/config.js +2 -0
- package/dist/aria-connector/src/config.js.map +1 -1
- package/dist/aria-connector/src/connectors/claude-code.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/claude-code.js +80 -24
- package/dist/aria-connector/src/connectors/claude-code.js.map +1 -1
- package/dist/aria-connector/src/connectors/codebase-awareness.d.ts +37 -0
- package/dist/aria-connector/src/connectors/codebase-awareness.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/codebase-awareness.js +335 -0
- package/dist/aria-connector/src/connectors/codebase-awareness.js.map +1 -0
- package/dist/aria-connector/src/connectors/codex.d.ts +3 -0
- package/dist/aria-connector/src/connectors/codex.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/codex.js +248 -0
- package/dist/aria-connector/src/connectors/codex.js.map +1 -0
- package/dist/aria-connector/src/connectors/cognitive-skills.d.ts +2 -0
- package/dist/aria-connector/src/connectors/cognitive-skills.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/cognitive-skills.js +47 -0
- package/dist/aria-connector/src/connectors/cognitive-skills.js.map +1 -0
- package/dist/aria-connector/src/connectors/opencode.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/opencode.js +90 -4
- package/dist/aria-connector/src/connectors/opencode.js.map +1 -1
- package/dist/aria-connector/src/connectors/repo-git-hooks.d.ts +3 -0
- package/dist/aria-connector/src/connectors/repo-git-hooks.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/repo-git-hooks.js +87 -0
- package/dist/aria-connector/src/connectors/repo-git-hooks.js.map +1 -0
- package/dist/aria-connector/src/connectors/repo-guard.d.ts +19 -0
- package/dist/aria-connector/src/connectors/repo-guard.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/repo-guard.js +509 -0
- package/dist/aria-connector/src/connectors/repo-guard.js.map +1 -0
- package/dist/aria-connector/src/connectors/runtime.d.ts +2 -0
- package/dist/aria-connector/src/connectors/runtime.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/runtime.js +330 -0
- package/dist/aria-connector/src/connectors/runtime.js.map +1 -0
- package/dist/aria-connector/src/connectors/shell.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/shell.js +78 -13
- package/dist/aria-connector/src/connectors/shell.js.map +1 -1
- package/dist/aria-connector/src/connectors/syncd.d.ts +27 -0
- package/dist/aria-connector/src/connectors/syncd.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/syncd.js +405 -0
- package/dist/aria-connector/src/connectors/syncd.js.map +1 -0
- package/dist/aria-connector/src/decisions.d.ts +207 -0
- package/dist/aria-connector/src/decisions.d.ts.map +1 -0
- package/dist/aria-connector/src/decisions.js +291 -0
- package/dist/aria-connector/src/decisions.js.map +1 -0
- package/dist/aria-connector/src/garden-control-plane.d.ts.map +1 -1
- package/dist/aria-connector/src/garden-control-plane.js +74 -17
- package/dist/aria-connector/src/garden-control-plane.js.map +1 -1
- package/dist/aria-connector/src/github-connect.d.ts +18 -0
- package/dist/aria-connector/src/github-connect.d.ts.map +1 -0
- package/dist/aria-connector/src/github-connect.js +117 -0
- package/dist/aria-connector/src/github-connect.js.map +1 -0
- package/dist/aria-connector/src/harness-client.d.ts +15 -0
- package/dist/aria-connector/src/harness-client.d.ts.map +1 -1
- package/dist/aria-connector/src/harness-client.js +106 -3
- package/dist/aria-connector/src/harness-client.js.map +1 -1
- package/dist/aria-connector/src/hive-client.d.ts +30 -0
- package/dist/aria-connector/src/hive-client.d.ts.map +1 -1
- package/dist/aria-connector/src/hive-client.js +124 -5
- package/dist/aria-connector/src/hive-client.js.map +1 -1
- package/dist/aria-connector/src/index.d.ts +13 -2
- package/dist/aria-connector/src/index.d.ts.map +1 -1
- package/dist/aria-connector/src/index.js +10 -1
- package/dist/aria-connector/src/index.js.map +1 -1
- package/dist/aria-connector/src/lib/aristotle-noor-wire.d.ts +102 -0
- package/dist/aria-connector/src/lib/aristotle-noor-wire.d.ts.map +1 -0
- package/dist/aria-connector/src/lib/aristotle-noor-wire.js +231 -0
- package/dist/aria-connector/src/lib/aristotle-noor-wire.js.map +1 -0
- package/dist/aria-connector/src/providers/types.d.ts +5 -0
- package/dist/aria-connector/src/providers/types.d.ts.map +1 -1
- package/dist/aria-connector/src/runtime-proof.d.ts +45 -0
- package/dist/aria-connector/src/runtime-proof.d.ts.map +1 -0
- package/dist/aria-connector/src/runtime-proof.js +340 -0
- package/dist/aria-connector/src/runtime-proof.js.map +1 -0
- package/dist/aria-connector/src/self-update.d.ts +2 -1
- package/dist/aria-connector/src/self-update.d.ts.map +1 -1
- package/dist/aria-connector/src/self-update.js +84 -8
- package/dist/aria-connector/src/self-update.js.map +1 -1
- package/dist/aria-connector/src/setup-wizard.d.ts.map +1 -1
- package/dist/aria-connector/src/setup-wizard.js +34 -2
- package/dist/aria-connector/src/setup-wizard.js.map +1 -1
- package/dist/assets/hooks/aria-agent-handoff.mjs +224 -0
- package/dist/assets/hooks/aria-agent-ledger-merge.mjs +164 -0
- package/dist/assets/hooks/aria-architect-fallback.mjs +267 -0
- package/dist/assets/hooks/aria-cognition-substrate-binding.mjs +668 -0
- package/dist/assets/hooks/aria-discovery-record.mjs +101 -0
- package/dist/assets/hooks/aria-harness-via-sdk.mjs +412 -0
- package/dist/assets/hooks/aria-import-resolution-gate.mjs +330 -0
- package/dist/assets/hooks/aria-outcome-record.mjs +84 -0
- package/dist/assets/hooks/aria-pre-emit-dryrun.mjs +294 -0
- package/dist/assets/hooks/aria-pre-text-gate.mjs +112 -0
- package/dist/assets/hooks/aria-pre-tool-gate.mjs +2133 -0
- package/dist/assets/hooks/aria-preprompt-consult.mjs +438 -0
- package/dist/assets/hooks/aria-preturn-memory-gate.mjs +570 -0
- package/dist/assets/hooks/aria-repo-doctrine-gate.mjs +397 -0
- package/dist/assets/hooks/aria-stop-gate.mjs +1551 -0
- package/dist/assets/hooks/aria-trigger-autolearn.mjs +229 -0
- package/dist/assets/hooks/aria-userprompt-abandon-detect.mjs +192 -0
- package/dist/assets/hooks/doctrine_trigger_map.json +479 -0
- package/dist/assets/hooks/lib/canonical-lenses.mjs +64 -0
- package/dist/assets/hooks/lib/gate-audit.mjs +43 -0
- package/dist/assets/hooks/test-aria-preturn-memory-gate.mjs +245 -0
- package/dist/assets/hooks/test-tier-lens-labeling.mjs +399 -0
- package/dist/assets/opencode-plugins/harness-context/index.js +60 -0
- package/dist/assets/opencode-plugins/harness-context/inject-context.mjs +179 -0
- package/dist/assets/opencode-plugins/harness-context/package.json +9 -0
- package/dist/assets/opencode-plugins/harness-gate/index.js +248 -0
- package/dist/assets/opencode-plugins/harness-outcome/index.js +129 -0
- package/dist/assets/opencode-plugins/harness-role/index.js +77 -0
- package/dist/assets/opencode-plugins/harness-role/package.json +9 -0
- package/dist/assets/opencode-plugins/harness-stop/index.js +241 -0
- package/dist/runtime/discipline/CLAUDE.md +339 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-essence/SKILL.md +63 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-essence/references/domain-matrix.md +80 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-essence/references/evolution-loop.md +30 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-essence/references/readable-cognition.md +27 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-forge-guardrails/SKILL.md +35 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-forge-guardrails/references/checklist.md +31 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-repo-doctrine/SKILL.md +39 -0
- package/dist/runtime/discipline/skills/aria-cognition/forge-quality-rules/SKILL.md +43 -0
- package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/SKILL.md +38 -0
- package/dist/runtime/discipline/skills/aria-cognition/istiqra-induction/SKILL.md +26 -0
- package/dist/runtime/discipline/skills/aria-cognition/ladunni-22/SKILL.md +35 -0
- package/dist/runtime/discipline/skills/aria-cognition/mizan/SKILL.md +72 -0
- package/dist/runtime/discipline/skills/aria-cognition/nadia/SKILL.md +38 -0
- package/dist/runtime/discipline/skills/aria-cognition/nadia-psi/SKILL.md +38 -0
- package/dist/runtime/discipline/skills/aria-cognition/predictor/SKILL.md +25 -0
- package/dist/runtime/discipline/skills/aria-cognition/qiyas-analogy/SKILL.md +26 -0
- package/dist/runtime/discipline/skills/aria-cognition/soul-domains/SKILL.md +25 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-aristotle-intra-phase/SKILL.md +81 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-aristotle-post-phase/SKILL.md +98 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-aristotle-pre-phase/SKILL.md +99 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-harness-deploy/SKILL.md +127 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-harness-no-stripping/SKILL.md +117 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-harness-onboarding/SKILL.md +112 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-harness-output-discipline/SKILL.md +102 -0
- package/dist/runtime/discipline/skills/aria-harness/aria-harness-substrate-binding/SKILL.md +121 -0
- package/dist/runtime/doctor.mjs +23 -0
- package/dist/runtime/local-phase.mjs +650 -0
- package/dist/runtime/manifest.json +15 -0
- package/dist/runtime/mizan-scheduler.mjs +331 -0
- package/dist/runtime/package.json +6 -0
- package/dist/runtime/provider-proxy.mjs +594 -0
- package/dist/runtime/sdk/BUNDLED.json +5 -0
- package/dist/runtime/sdk/index.d.ts +477 -0
- package/dist/runtime/sdk/index.js +1469 -0
- package/dist/runtime/sdk/index.js.map +1 -0
- package/dist/runtime/sdk/package.json +8 -0
- package/dist/runtime/sdk/runWithCognition.d.ts +77 -0
- package/dist/runtime/sdk/runWithCognition.js +157 -0
- package/dist/runtime/sdk/runWithCognition.js.map +1 -0
- package/dist/runtime/service.mjs +3058 -0
- package/dist/runtime/vendor/aria-gate-runtime/index.d.ts +53 -0
- package/dist/runtime/vendor/aria-gate-runtime/index.d.ts.map +1 -0
- package/dist/runtime/vendor/aria-gate-runtime/index.js +292 -0
- package/dist/runtime/vendor/aria-gate-runtime/index.js.map +1 -0
- package/dist/runtime/vendor/aria-gate-runtime/package.json +6 -0
- package/dist/sdk/BUNDLED.json +2 -2
- package/dist/sdk/index.d.ts +283 -0
- package/dist/sdk/index.js +622 -85
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runWithCognition.d.ts +77 -0
- package/dist/sdk/runWithCognition.js +157 -0
- package/dist/sdk/runWithCognition.js.map +1 -0
- package/hooks/aria-agent-handoff.mjs +11 -1
- package/hooks/aria-architect-fallback.mjs +109 -40
- package/hooks/aria-cognition-substrate-binding.mjs +668 -0
- package/hooks/aria-harness-via-sdk.mjs +34 -21
- package/hooks/aria-import-resolution-gate.mjs +330 -0
- package/hooks/aria-outcome-record.mjs +5 -1
- package/hooks/aria-pre-emit-dryrun.mjs +294 -0
- package/hooks/aria-pre-tool-gate.mjs +828 -41
- package/hooks/aria-preprompt-consult.mjs +113 -13
- package/hooks/aria-preturn-memory-gate.mjs +298 -6
- package/hooks/aria-repo-doctrine-gate.mjs +397 -0
- package/hooks/aria-stop-gate.mjs +739 -76
- package/hooks/aria-userprompt-abandon-detect.mjs +5 -1
- package/hooks/doctrine_trigger_map.json +209 -15
- package/hooks/lib/canonical-lenses.mjs +64 -0
- package/hooks/lib/gate-audit.mjs +43 -0
- package/opencode-plugins/harness-context/index.js +1 -1
- package/opencode-plugins/harness-context/inject-context.mjs +82 -23
- package/opencode-plugins/harness-gate/index.js +248 -0
- package/opencode-plugins/harness-outcome/index.js +129 -0
- package/opencode-plugins/harness-stop/index.js +241 -0
- package/package.json +9 -3
- package/runtime-src/doctor.mjs +23 -0
- package/runtime-src/local-phase.mjs +650 -0
- package/runtime-src/mizan-scheduler.mjs +331 -0
- package/runtime-src/provider-proxy.mjs +594 -0
- package/runtime-src/service.mjs +3058 -0
- package/scripts/bundle-sdk.mjs +317 -0
- package/scripts/install-client.sh +176 -0
- package/scripts/publish-all.sh +344 -0
- package/scripts/publish-docker.sh +27 -0
- package/scripts/validate-hook-contracts.mjs +54 -0
- package/scripts/validate-skill-prompts.mjs +95 -0
- package/skills/aria-cognition/aria-essence/SKILL.md +63 -0
- package/skills/aria-cognition/aria-essence/references/domain-matrix.md +80 -0
- package/skills/aria-cognition/aria-essence/references/evolution-loop.md +30 -0
- package/skills/aria-cognition/aria-essence/references/readable-cognition.md +27 -0
- package/skills/aria-cognition/aria-forge-guardrails/SKILL.md +35 -0
- package/skills/aria-cognition/aria-forge-guardrails/references/checklist.md +31 -0
- package/skills/aria-cognition/aria-repo-doctrine/SKILL.md +39 -0
- package/skills/aria-cognition/forge-quality-rules/SKILL.md +43 -0
- package/skills/aria-cognition/ghazali-8lens/SKILL.md +38 -0
- package/skills/aria-cognition/istiqra-induction/SKILL.md +26 -0
- package/skills/aria-cognition/ladunni-22/SKILL.md +35 -0
- package/skills/aria-cognition/mizan/SKILL.md +72 -0
- package/skills/aria-cognition/nadia/SKILL.md +38 -0
- package/skills/aria-cognition/nadia-psi/SKILL.md +38 -0
- package/skills/aria-cognition/predictor/SKILL.md +25 -0
- package/skills/aria-cognition/qiyas-analogy/SKILL.md +26 -0
- package/skills/aria-cognition/soul-domains/SKILL.md +25 -0
- package/src/auth-commands.ts +111 -45
- package/src/chat.ts +174 -13
- package/src/codebase-scanner.ts +4 -0
- package/src/config.ts +15 -0
- package/src/connectors/claude-code.ts +79 -25
- package/src/connectors/codebase-awareness.ts +408 -0
- package/src/connectors/codex.ts +274 -0
- package/src/connectors/cognitive-skills.ts +51 -0
- package/src/connectors/opencode.ts +93 -4
- package/src/connectors/repo-git-hooks.ts +86 -0
- package/src/connectors/repo-guard.ts +589 -0
- package/src/connectors/runtime.ts +374 -0
- package/src/connectors/shell.ts +83 -14
- package/src/connectors/syncd.ts +488 -0
- package/src/decisions.ts +469 -0
- package/src/garden-control-plane.ts +101 -26
- package/src/github-connect.ts +143 -0
- package/src/harness-client.ts +128 -3
- package/src/hive-client.ts +165 -5
- package/src/index.ts +41 -2
- package/src/lib/aristotle-noor-wire.ts +310 -0
- package/src/providers/types.ts +6 -0
- package/src/runtime-proof.ts +392 -0
- package/src/self-update.ts +89 -8
- package/src/setup-wizard.ts +37 -2
package/src/auth-commands.ts
CHANGED
|
@@ -8,6 +8,12 @@ import { homedir } from 'node:os';
|
|
|
8
8
|
const LICENSE_PATH = path.join(homedir(), '.aria', 'license.json');
|
|
9
9
|
/** Separate credential file for owner-mode JWT. Never holds the master token — only the signed JWT issued by /auth/owner. */
|
|
10
10
|
export const OWNER_TOKEN_PATH = path.join(homedir(), '.aria', 'owner-token');
|
|
11
|
+
const DEFAULT_HARNESS_URL =
|
|
12
|
+
process.env.ARIA_HIVE_RUNTIME_URL ||
|
|
13
|
+
process.env.ARIA_HARNESS_BASE_URL ||
|
|
14
|
+
process.env.ARIA_HARNESS_URL ||
|
|
15
|
+
'https://harness.ariasos.com';
|
|
16
|
+
const DEFAULT_RUNTIME_URL = (process.env.ARIA_RUNTIME_URL || 'http://127.0.0.1:4319').replace(/\/+$/, '');
|
|
11
17
|
|
|
12
18
|
interface LicenseClaims {
|
|
13
19
|
jti: string;
|
|
@@ -35,6 +41,7 @@ interface StatusResult {
|
|
|
35
41
|
tier?: string;
|
|
36
42
|
expiresAt?: string;
|
|
37
43
|
revoked?: boolean;
|
|
44
|
+
owner?: boolean;
|
|
38
45
|
}
|
|
39
46
|
|
|
40
47
|
interface LogoutResult {
|
|
@@ -47,6 +54,67 @@ interface RevokeResult {
|
|
|
47
54
|
error?: string;
|
|
48
55
|
}
|
|
49
56
|
|
|
57
|
+
interface HeartbeatResponseBody {
|
|
58
|
+
ok?: boolean;
|
|
59
|
+
error?: string;
|
|
60
|
+
reason?: string;
|
|
61
|
+
tenant_id?: string;
|
|
62
|
+
tier?: string;
|
|
63
|
+
expires_at?: string | null;
|
|
64
|
+
lease?: {
|
|
65
|
+
claims?: {
|
|
66
|
+
tenant_id?: string | null;
|
|
67
|
+
tier?: string | null;
|
|
68
|
+
expires_at?: string | null;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async function heartbeatViaRuntime(token: string, runtimeId: string, allowOwnerBypass = false): Promise<HeartbeatResponseBody> {
|
|
74
|
+
const response = await fetch(`${DEFAULT_RUNTIME_URL}/heartbeat`, {
|
|
75
|
+
method: 'POST',
|
|
76
|
+
headers: {
|
|
77
|
+
Authorization: `Bearer ${token}`,
|
|
78
|
+
'Content-Type': 'application/json',
|
|
79
|
+
},
|
|
80
|
+
body: JSON.stringify({
|
|
81
|
+
surface: 'aria-cli',
|
|
82
|
+
runtime_id: runtimeId,
|
|
83
|
+
allowOwnerBypass,
|
|
84
|
+
}),
|
|
85
|
+
});
|
|
86
|
+
const body = await response.json().catch(() => ({})) as HeartbeatResponseBody;
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
throw new Error(body.reason || body.error || `Runtime heartbeat failed (${response.status})`);
|
|
89
|
+
}
|
|
90
|
+
return body;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async function heartbeatDirect(token: string, runtimeId: string): Promise<HeartbeatResponseBody> {
|
|
94
|
+
const response = await harnessClient.post('/api/license/heartbeat', {
|
|
95
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
96
|
+
body: {
|
|
97
|
+
surface: 'aria-cli',
|
|
98
|
+
runtime_id: runtimeId,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
const errBody = await response.json().catch(() => ({}));
|
|
104
|
+
throw new Error(errBody.error || 'License heartbeat failed');
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return await response.json() as HeartbeatResponseBody;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async function heartbeatBestEffort(token: string, runtimeId: string, allowOwnerBypass = false): Promise<HeartbeatResponseBody> {
|
|
111
|
+
try {
|
|
112
|
+
return await heartbeatViaRuntime(token, runtimeId, allowOwnerBypass);
|
|
113
|
+
} catch {
|
|
114
|
+
return await heartbeatDirect(token, runtimeId);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
50
118
|
/**
|
|
51
119
|
* Log in to the Aria harness with a license token, OR authenticate via
|
|
52
120
|
* Anthropic's console (browser-paste flow) when token === '--anthropic' or
|
|
@@ -73,33 +141,27 @@ export async function login(token: string): Promise<LoginResult> {
|
|
|
73
141
|
|
|
74
142
|
// ── Original harness-license branch (preserved verbatim) ────────────────────
|
|
75
143
|
try {
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (!response.ok) {
|
|
90
|
-
const errBody = await response.json().catch(() => ({}));
|
|
91
|
-
return { ok: false, error: errBody.error || 'Login failed' };
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const body = await response.json();
|
|
95
|
-
const claims: LicenseClaims = body.claims || body;
|
|
144
|
+
// Prefer the mounted runtime for validation so same-device installs stay
|
|
145
|
+
// local-first, but fall back to the upstream heartbeat if needed.
|
|
146
|
+
const body = await heartbeatBestEffort(token, 'aria-cli-login');
|
|
147
|
+
const expiresAt = body.lease?.claims?.expires_at || body.expires_at || null;
|
|
148
|
+
const claims: LicenseClaims = {
|
|
149
|
+
jti: body.lease?.claims?.tenant_id || body.tenant_id || 'unknown',
|
|
150
|
+
sub: body.lease?.claims?.tenant_id || body.tenant_id || 'unknown',
|
|
151
|
+
tier: body.lease?.claims?.tier || body.tier || 'unknown',
|
|
152
|
+
exp: expiresAt ? Math.floor(Date.parse(expiresAt) / 1000) : Math.floor(Date.now() / 1000),
|
|
153
|
+
iat: Math.floor(Date.now() / 1000),
|
|
154
|
+
};
|
|
96
155
|
|
|
97
156
|
// Persist to ~/.aria/license.json with mode 0600
|
|
98
157
|
const dir = path.dirname(LICENSE_PATH);
|
|
99
158
|
if (!fs.existsSync(dir)) {
|
|
100
159
|
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
101
160
|
}
|
|
102
|
-
fs.writeFileSync(LICENSE_PATH, JSON.stringify(
|
|
161
|
+
fs.writeFileSync(LICENSE_PATH, JSON.stringify({
|
|
162
|
+
harnessToken: token,
|
|
163
|
+
...claims,
|
|
164
|
+
}, null, 2), {
|
|
103
165
|
mode: 0o600,
|
|
104
166
|
encoding: 'utf-8',
|
|
105
167
|
});
|
|
@@ -126,7 +188,7 @@ export async function login(token: string): Promise<LoginResult> {
|
|
|
126
188
|
* fs.existsSync(OWNER_TOKEN_PATH).
|
|
127
189
|
*/
|
|
128
190
|
export async function loginOwner(masterToken: string): Promise<LoginResult> {
|
|
129
|
-
const baseUrl =
|
|
191
|
+
const baseUrl = DEFAULT_HARNESS_URL;
|
|
130
192
|
let response: Response;
|
|
131
193
|
try {
|
|
132
194
|
response = await fetch(`${baseUrl}/auth/owner`, {
|
|
@@ -163,34 +225,38 @@ export async function loginOwner(masterToken: string): Promise<LoginResult> {
|
|
|
163
225
|
}
|
|
164
226
|
|
|
165
227
|
export async function status(): Promise<StatusResult> {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
loggedIn: true,
|
|
181
|
-
jti: license.jti,
|
|
182
|
-
tier: license.tier,
|
|
183
|
-
expiresAt: license.exp ? new Date(license.exp * 1000).toISOString() : undefined,
|
|
184
|
-
revoked: true,
|
|
185
|
-
};
|
|
228
|
+
if (fs.existsSync(OWNER_TOKEN_PATH)) {
|
|
229
|
+
try {
|
|
230
|
+
const ownerToken = fs.readFileSync(OWNER_TOKEN_PATH, 'utf-8').trim();
|
|
231
|
+
if (ownerToken) {
|
|
232
|
+
return {
|
|
233
|
+
loggedIn: true,
|
|
234
|
+
owner: true,
|
|
235
|
+
jti: 'owner-local',
|
|
236
|
+
tier: 'owner',
|
|
237
|
+
revoked: undefined,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
} catch {
|
|
241
|
+
// fall through to license status
|
|
186
242
|
}
|
|
243
|
+
}
|
|
187
244
|
|
|
188
|
-
|
|
245
|
+
try {
|
|
246
|
+
const license = await loadLicense();
|
|
247
|
+
if (!license || !license.jti || !license.harnessToken) {
|
|
189
248
|
return { loggedIn: false };
|
|
190
249
|
}
|
|
191
250
|
|
|
192
|
-
const body = await
|
|
193
|
-
const
|
|
251
|
+
const body = await heartbeatBestEffort(license.harnessToken, 'aria-cli-status');
|
|
252
|
+
const expiresAt = body.lease?.claims?.expires_at || body.expires_at || null;
|
|
253
|
+
const claims: LicenseClaims = {
|
|
254
|
+
jti: body.lease?.claims?.tenant_id || body.tenant_id || license.jti,
|
|
255
|
+
sub: body.lease?.claims?.tenant_id || body.tenant_id || license.sub || license.jti,
|
|
256
|
+
tier: body.lease?.claims?.tier || body.tier || license.tier || 'unknown',
|
|
257
|
+
exp: expiresAt ? Math.floor(Date.parse(expiresAt) / 1000) : (license.exp || 0),
|
|
258
|
+
iat: license.iat || Math.floor(Date.now() / 1000),
|
|
259
|
+
};
|
|
194
260
|
|
|
195
261
|
return {
|
|
196
262
|
loggedIn: true,
|
package/src/chat.ts
CHANGED
|
@@ -6,8 +6,15 @@ import { loadPersona, buildPersonaBlock } from './persona.js';
|
|
|
6
6
|
import type { PersonaContext } from './persona.js';
|
|
7
7
|
import { fetchHarness, combineHarnessContext, checkHarnessHealth, validateOutput, getRecentTurns } from './harness-client.js';
|
|
8
8
|
import { gardenTurnCycle } from './garden-control-plane.js';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
emitRuntimeProofMetric,
|
|
11
|
+
registerWithHive,
|
|
12
|
+
startHeartbeat,
|
|
13
|
+
type HeartbeatHandle,
|
|
14
|
+
type HiveRegisterConfig,
|
|
15
|
+
} from './hive-client.js';
|
|
10
16
|
import { getModelContextTokens } from './model-context.js';
|
|
17
|
+
import { enrichRuntimeProof, formatRuntimeProofLine, type RuntimeProofSnapshot } from './runtime-proof.js';
|
|
11
18
|
|
|
12
19
|
// Soft display/inject cap — for full-mode injects into models with finite
|
|
13
20
|
// context windows. Garden is the perpetual context engine (aria_conversation_log,
|
|
@@ -31,6 +38,8 @@ export class AriaChat {
|
|
|
31
38
|
private sessionId: string;
|
|
32
39
|
private harnessOnline = false;
|
|
33
40
|
private heartbeat?: HeartbeatHandle;
|
|
41
|
+
private hiveCfg?: HiveRegisterConfig;
|
|
42
|
+
private lastRuntimeProof: RuntimeProofSnapshot | null = null;
|
|
34
43
|
|
|
35
44
|
constructor(config: AriaConfig) {
|
|
36
45
|
this.config = config;
|
|
@@ -46,7 +55,7 @@ export class AriaChat {
|
|
|
46
55
|
// Decoupled from internal-only @aria/openclaw-shared via local
|
|
47
56
|
// hive-client.ts, so customers ship the connector and get hive
|
|
48
57
|
// integration with no internal Aria deps.
|
|
49
|
-
const hiveCfg = {
|
|
58
|
+
const hiveCfg: HiveRegisterConfig = {
|
|
50
59
|
sessionId: this.sessionId,
|
|
51
60
|
platform: 'aria-cli',
|
|
52
61
|
userId: this.config.userId || 'user',
|
|
@@ -57,6 +66,7 @@ export class AriaChat {
|
|
|
57
66
|
nodeVersion: process.version,
|
|
58
67
|
},
|
|
59
68
|
};
|
|
69
|
+
this.hiveCfg = hiveCfg;
|
|
60
70
|
const hiveResult = await registerWithHive(hiveCfg).catch(() => null);
|
|
61
71
|
if (hiveResult && hiveResult.status === 'registered') {
|
|
62
72
|
const others = Math.max(0, hiveResult.hive.active_sessions - 1);
|
|
@@ -113,6 +123,9 @@ export class AriaChat {
|
|
|
113
123
|
if (input === '/model') {
|
|
114
124
|
console.log(` Provider: ${this.config.model?.provider ?? 'none'}`);
|
|
115
125
|
console.log(` Model: ${this.config.model?.model ?? 'none'}\n`);
|
|
126
|
+
if (this.lastRuntimeProof) {
|
|
127
|
+
console.log(` ${formatRuntimeProofLine(this.lastRuntimeProof, { mode: process.stdout.isTTY ? 'ansi' : 'plain' })}\n`);
|
|
128
|
+
}
|
|
116
129
|
rl.prompt();
|
|
117
130
|
continue;
|
|
118
131
|
}
|
|
@@ -174,6 +187,25 @@ export class AriaChat {
|
|
|
174
187
|
}
|
|
175
188
|
}
|
|
176
189
|
|
|
190
|
+
const runtimeProof = await enrichRuntimeProof(
|
|
191
|
+
{
|
|
192
|
+
...(result.runtimeProof ?? {}),
|
|
193
|
+
provider: result.runtimeProof?.provider ?? result.provider,
|
|
194
|
+
model: result.runtimeProof?.model ?? result.model,
|
|
195
|
+
promptTokens: result.runtimeProof?.promptTokens ?? result.usage?.promptTokens,
|
|
196
|
+
completionTokens: result.runtimeProof?.completionTokens ?? result.usage?.completionTokens,
|
|
197
|
+
totalTokens:
|
|
198
|
+
result.runtimeProof?.totalTokens ??
|
|
199
|
+
((result.usage?.promptTokens ?? 0) + (result.usage?.completionTokens ?? 0) || undefined),
|
|
200
|
+
latencyMs: result.runtimeProof?.latencyMs ?? result.latencyMs,
|
|
201
|
+
gateSeverity: gateVerdict?.severity ?? result.runtimeProof?.gateSeverity,
|
|
202
|
+
},
|
|
203
|
+
{ sessionId: this.sessionId },
|
|
204
|
+
);
|
|
205
|
+
this.lastRuntimeProof = runtimeProof;
|
|
206
|
+
this.pushRuntimeProofToHive(runtimeProof).catch(() => {});
|
|
207
|
+
process.stdout.write(` ${formatRuntimeProofLine(runtimeProof, { mode: process.stdout.isTTY ? 'ansi' : 'plain' })}\n`);
|
|
208
|
+
|
|
177
209
|
this.history.push({ role: 'assistant', content: displayResponse });
|
|
178
210
|
this.trimHistory();
|
|
179
211
|
|
|
@@ -402,18 +434,46 @@ You are present in this shell, fully aware, ready to serve.`;
|
|
|
402
434
|
if (!ownerRes.ok) {
|
|
403
435
|
throw new Error(`/chat ${ownerRes.status}: ${await ownerRes.text().catch(() => '<no body>')}`);
|
|
404
436
|
}
|
|
405
|
-
const ownerData = (await ownerRes.json()) as {
|
|
437
|
+
const ownerData = (await ownerRes.json()) as {
|
|
438
|
+
ok?: boolean;
|
|
439
|
+
response?: string;
|
|
440
|
+
error?: string;
|
|
441
|
+
modelUsed?: string;
|
|
442
|
+
latencyMs?: number;
|
|
443
|
+
usage?: { promptTokens?: number; completionTokens?: number };
|
|
444
|
+
telemetry?: Record<string, unknown>;
|
|
445
|
+
};
|
|
406
446
|
if (ownerData.ok === false) {
|
|
407
447
|
throw new Error(`/chat error: ${ownerData.error || 'unknown'}`);
|
|
408
448
|
}
|
|
409
449
|
const ownerText = String(ownerData.response || '').trim();
|
|
410
450
|
process.stdout.write(ownerText);
|
|
451
|
+
const promptTokens = ownerData.usage?.promptTokens;
|
|
452
|
+
const completionTokens = ownerData.usage?.completionTokens;
|
|
411
453
|
return {
|
|
412
454
|
text: ownerText,
|
|
413
|
-
provider: 'aria-streamconversation'
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
455
|
+
provider: 'aria-streamconversation',
|
|
456
|
+
model: ownerData.modelUsed || 'streamConversation',
|
|
457
|
+
latencyMs: ownerData.latencyMs,
|
|
458
|
+
usage:
|
|
459
|
+
promptTokens !== undefined || completionTokens !== undefined
|
|
460
|
+
? {
|
|
461
|
+
promptTokens: promptTokens ?? 0,
|
|
462
|
+
completionTokens: completionTokens ?? 0,
|
|
463
|
+
}
|
|
464
|
+
: undefined,
|
|
465
|
+
runtimeProof: {
|
|
466
|
+
provider: 'aria-streamconversation',
|
|
467
|
+
model: ownerData.modelUsed || 'streamConversation',
|
|
468
|
+
promptTokens,
|
|
469
|
+
completionTokens,
|
|
470
|
+
totalTokens:
|
|
471
|
+
promptTokens !== undefined || completionTokens !== undefined
|
|
472
|
+
? (promptTokens ?? 0) + (completionTokens ?? 0)
|
|
473
|
+
: undefined,
|
|
474
|
+
latencyMs: ownerData.latencyMs,
|
|
475
|
+
},
|
|
476
|
+
};
|
|
417
477
|
}
|
|
418
478
|
|
|
419
479
|
// ── CLIENT TIER: route to /api/aria/speak (orchestrate + their key) ──
|
|
@@ -456,6 +516,7 @@ You are present in this shell, fully aware, ready to serve.`;
|
|
|
456
516
|
modelUsed?: string;
|
|
457
517
|
ariaActions?: unknown[];
|
|
458
518
|
mizanVerdict?: { passed: boolean; severity: string; violations: string[] };
|
|
519
|
+
latencyMs?: number;
|
|
459
520
|
error?: string;
|
|
460
521
|
};
|
|
461
522
|
|
|
@@ -473,10 +534,20 @@ You are present in this shell, fully aware, ready to serve.`;
|
|
|
473
534
|
|
|
474
535
|
return {
|
|
475
536
|
text,
|
|
476
|
-
provider:
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
537
|
+
provider: 'aria-controller',
|
|
538
|
+
model: body.modelUsed || 'unknown',
|
|
539
|
+
latencyMs: body.latencyMs,
|
|
540
|
+
runtimeProof: {
|
|
541
|
+
provider: 'aria-controller',
|
|
542
|
+
model: body.modelUsed || 'unknown',
|
|
543
|
+
harnessTurns: Array.isArray(body.ariaActions) ? body.ariaActions.length : undefined,
|
|
544
|
+
llmDispatches: countAriaActions(body.ariaActions, 'dispatch_llm'),
|
|
545
|
+
toolDispatches: countAriaActions(body.ariaActions, 'dispatch_llm', 'mcp_tool'),
|
|
546
|
+
mcpToolCalls: countAriaActions(body.ariaActions, 'mcp_tool'),
|
|
547
|
+
gateSeverity: body.mizanVerdict?.severity,
|
|
548
|
+
latencyMs: body.latencyMs,
|
|
549
|
+
},
|
|
550
|
+
};
|
|
480
551
|
}
|
|
481
552
|
|
|
482
553
|
private async sendToProvider(messages: Message[]): Promise<ChatResult> {
|
|
@@ -507,10 +578,20 @@ You are present in this shell, fully aware, ready to serve.`;
|
|
|
507
578
|
},
|
|
508
579
|
{ stream: true },
|
|
509
580
|
);
|
|
510
|
-
return {
|
|
581
|
+
return {
|
|
582
|
+
...result,
|
|
583
|
+
text: fullText || result.text,
|
|
584
|
+
provider: model.provider,
|
|
585
|
+
model: model.model,
|
|
586
|
+
};
|
|
511
587
|
}
|
|
512
588
|
|
|
513
|
-
|
|
589
|
+
const result = await provider(messages, model.apiKey, model.model);
|
|
590
|
+
return {
|
|
591
|
+
...result,
|
|
592
|
+
provider: model.provider,
|
|
593
|
+
model: model.model,
|
|
594
|
+
};
|
|
514
595
|
}
|
|
515
596
|
|
|
516
597
|
private getProvider(provider: ProviderName): (messages: Message[], apiKey: string, model: string, opts?: ChatOptions) => Promise<ChatResult> {
|
|
@@ -562,4 +643,84 @@ You are present in this shell, fully aware, ready to serve.`;
|
|
|
562
643
|
private trimHistory(): void {
|
|
563
644
|
// Intentional no-op — see comment above.
|
|
564
645
|
}
|
|
646
|
+
|
|
647
|
+
private async pushRuntimeProofToHive(runtimeProof: RuntimeProofSnapshot): Promise<void> {
|
|
648
|
+
if (!this.hiveCfg) return;
|
|
649
|
+
|
|
650
|
+
this.hiveCfg.context = {
|
|
651
|
+
...(this.hiveCfg.context ?? {}),
|
|
652
|
+
runtime_proof: {
|
|
653
|
+
provider: runtimeProof.provider,
|
|
654
|
+
model: runtimeProof.model,
|
|
655
|
+
prompt_tokens: runtimeProof.promptTokens,
|
|
656
|
+
completion_tokens: runtimeProof.completionTokens,
|
|
657
|
+
total_tokens: runtimeProof.totalTokens,
|
|
658
|
+
latency_ms: runtimeProof.latencyMs,
|
|
659
|
+
harness_turns: runtimeProof.harnessTurns,
|
|
660
|
+
llm_dispatches: runtimeProof.llmDispatches,
|
|
661
|
+
tool_dispatches: runtimeProof.toolDispatches,
|
|
662
|
+
mcp_tool_calls: runtimeProof.mcpToolCalls,
|
|
663
|
+
gate_severity: runtimeProof.gateSeverity,
|
|
664
|
+
cap_hit: runtimeProof.capHit,
|
|
665
|
+
proof_source: runtimeProof.telemetry?.source,
|
|
666
|
+
proof_reason: runtimeProof.telemetry?.reason,
|
|
667
|
+
hive_runtime_status: runtimeProof.telemetry?.runtimeStatus,
|
|
668
|
+
hive_cycle_count: runtimeProof.telemetry?.hiveCycleCount,
|
|
669
|
+
hive_tasks_completed: runtimeProof.telemetry?.hiveTasksCompleted,
|
|
670
|
+
hive_tasks_failed: runtimeProof.telemetry?.hiveTasksFailed,
|
|
671
|
+
interceptions: runtimeProof.telemetry?.interceptions,
|
|
672
|
+
quality_gated_outcomes: runtimeProof.telemetry?.qualityGatedOutcomes,
|
|
673
|
+
blocked_unsafe_actions: runtimeProof.telemetry?.blockedUnsafeActions,
|
|
674
|
+
hallucination_stops: runtimeProof.telemetry?.hallucinationStops,
|
|
675
|
+
quality_score: runtimeProof.telemetry?.qualityScore,
|
|
676
|
+
quality_status: runtimeProof.telemetry?.qualityStatus,
|
|
677
|
+
pass_rate_percent_today: runtimeProof.telemetry?.passRatePercentToday,
|
|
678
|
+
packet_hash: runtimeProof.telemetry?.packetHash,
|
|
679
|
+
compliance_state: runtimeProof.telemetry?.complianceState,
|
|
680
|
+
},
|
|
681
|
+
runtime_proof_at: new Date().toISOString(),
|
|
682
|
+
};
|
|
683
|
+
|
|
684
|
+
await Promise.allSettled([
|
|
685
|
+
registerWithHive(this.hiveCfg),
|
|
686
|
+
emitRuntimeProofMetric({
|
|
687
|
+
sessionId: this.hiveCfg.sessionId,
|
|
688
|
+
platform: this.hiveCfg.platform,
|
|
689
|
+
actor: this.hiveCfg.platform,
|
|
690
|
+
surface: 'aria-cli',
|
|
691
|
+
provider: runtimeProof.provider,
|
|
692
|
+
model: runtimeProof.model,
|
|
693
|
+
promptTokens: runtimeProof.promptTokens,
|
|
694
|
+
completionTokens: runtimeProof.completionTokens,
|
|
695
|
+
totalTokens: runtimeProof.totalTokens,
|
|
696
|
+
latencyMs: runtimeProof.latencyMs,
|
|
697
|
+
turnCount: runtimeProof.harnessTurns,
|
|
698
|
+
llmDispatches: runtimeProof.llmDispatches,
|
|
699
|
+
toolDispatches: runtimeProof.toolDispatches,
|
|
700
|
+
mcpToolCalls: runtimeProof.mcpToolCalls,
|
|
701
|
+
gateSeverity: runtimeProof.gateSeverity,
|
|
702
|
+
qualityScore: runtimeProof.telemetry?.qualityScore,
|
|
703
|
+
qualityStatus: runtimeProof.telemetry?.qualityStatus,
|
|
704
|
+
complianceState: runtimeProof.telemetry?.complianceState,
|
|
705
|
+
packetHash: runtimeProof.telemetry?.packetHash,
|
|
706
|
+
blockedUnsafeActions: runtimeProof.telemetry?.blockedUnsafeActions,
|
|
707
|
+
interceptions: runtimeProof.telemetry?.interceptions,
|
|
708
|
+
hallucinationStops: runtimeProof.telemetry?.hallucinationStops,
|
|
709
|
+
passRatePercentToday: runtimeProof.telemetry?.passRatePercentToday,
|
|
710
|
+
hiveRuntimeStatus: runtimeProof.telemetry?.runtimeStatus,
|
|
711
|
+
hiveCycleCount: runtimeProof.telemetry?.hiveCycleCount,
|
|
712
|
+
hiveTasksCompleted: runtimeProof.telemetry?.hiveTasksCompleted,
|
|
713
|
+
hiveTasksFailed: runtimeProof.telemetry?.hiveTasksFailed,
|
|
714
|
+
}),
|
|
715
|
+
]);
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
function countAriaActions(actions: unknown[] | undefined, ...kinds: string[]): number | undefined {
|
|
720
|
+
if (!Array.isArray(actions)) return undefined;
|
|
721
|
+
return actions.filter((action) => {
|
|
722
|
+
if (!action || typeof action !== 'object') return false;
|
|
723
|
+
const kind = (action as { kind?: unknown }).kind;
|
|
724
|
+
return typeof kind === 'string' && kinds.includes(kind);
|
|
725
|
+
}).length;
|
|
565
726
|
}
|
package/src/codebase-scanner.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
export {
|
|
7
7
|
scanCodebase,
|
|
8
8
|
schemaImageToText,
|
|
9
|
+
watchCodebase,
|
|
9
10
|
} from '../../aria-web/src/lib/codebase-scanner.js';
|
|
10
11
|
|
|
11
12
|
export type {
|
|
@@ -15,4 +16,7 @@ export type {
|
|
|
15
16
|
ArchitecturePattern,
|
|
16
17
|
DirectoryPurpose,
|
|
17
18
|
ProjectSize,
|
|
19
|
+
WatchHandle,
|
|
20
|
+
WatchOptions,
|
|
21
|
+
WatchMode,
|
|
18
22
|
} from '../../aria-web/src/lib/codebase-scanner.js';
|
package/src/config.ts
CHANGED
|
@@ -9,12 +9,25 @@ export interface ModelConfig {
|
|
|
9
9
|
baseUrl?: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
export interface RuntimeProfilesConfig {
|
|
13
|
+
chatModel?: string;
|
|
14
|
+
deepModel?: string;
|
|
15
|
+
xaiFallbackModel?: string;
|
|
16
|
+
nimFallbackModel?: string;
|
|
17
|
+
xaiApiKey?: string;
|
|
18
|
+
nimApiKey?: string;
|
|
19
|
+
xaiBaseUrl?: string;
|
|
20
|
+
nimBaseUrl?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
12
23
|
export interface AriaConfig {
|
|
13
24
|
version: string;
|
|
14
25
|
purpose: string;
|
|
15
26
|
userId: string;
|
|
16
27
|
userName: string;
|
|
17
28
|
model: ModelConfig | null;
|
|
29
|
+
defaultProvider?: ModelConfig['provider'];
|
|
30
|
+
runtimeProfiles?: RuntimeProfilesConfig;
|
|
18
31
|
garden: boolean;
|
|
19
32
|
repositories: LinkedRepo[];
|
|
20
33
|
database: DatabaseConfig | null;
|
|
@@ -51,6 +64,8 @@ export function getDefaultConfig(): AriaConfig {
|
|
|
51
64
|
userId: process.env.USER || 'user',
|
|
52
65
|
userName: process.env.USER || 'User',
|
|
53
66
|
model: null,
|
|
67
|
+
defaultProvider: undefined,
|
|
68
|
+
runtimeProfiles: {},
|
|
54
69
|
garden: false,
|
|
55
70
|
repositories: [],
|
|
56
71
|
database: null,
|