@aegisagentics/agent 0.2.1 → 0.2.3
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/README.md +4 -4
- package/npm/install.js +13 -11
- package/npm/lib/codex-plugin.js +12 -0
- package/npm/lib/config.js +0 -6
- package/npm/release-manifest.json +11 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ no TCP listener. Check the local state with `aegis-agent status` and
|
|
|
48
48
|
`aegis-agent doctor`; remove just this integration with
|
|
49
49
|
`aegis-agent uninstall --vendors openclaw`.
|
|
50
50
|
|
|
51
|
-
Lifecycle facts go through the
|
|
51
|
+
Lifecycle facts go through the governed OTLP trace path.
|
|
52
52
|
`log.record` is supplementary: its bounded message stays inside the same-UID
|
|
53
53
|
UDS handoff until Rust redacts it, then it is sent to the authenticated OTLP
|
|
54
54
|
logs endpoint. In the default metadata policy, the installer leaves OpenClaw
|
|
@@ -107,7 +107,7 @@ crates/aegis-agent/ Native Rust runtime
|
|
|
107
107
|
5. The bootstrapper verifies byte size and SHA-256 before extracting.
|
|
108
108
|
6. The native runtime writes local config and owner-only credentials.
|
|
109
109
|
7. Vendor-specific hook files are installed. Codex currently uses both plugin registration and Aegis-owned direct `hooks.json` entries for reliable local execution.
|
|
110
|
-
8. Agent hooks send safe metadata, OTLP facts
|
|
110
|
+
8. Agent hooks send safe metadata, canonical OTLP facts/logs, and governed capture candidates according to local capture policy.
|
|
111
111
|
|
|
112
112
|
## Local Files
|
|
113
113
|
|
|
@@ -146,8 +146,8 @@ The plugin intentionally separates facts, logs, and artifacts:
|
|
|
146
146
|
| Data type | Path | Notes |
|
|
147
147
|
| --- | --- | --- |
|
|
148
148
|
| Run/session/tool facts | Plugin -> OTLP collector -> ControlTower API | Metadata and span facts. Collector forwards agent auth. |
|
|
149
|
-
| Human-readable logs | Plugin ->
|
|
150
|
-
| Capture artifacts | Plugin/gateway -> Capture API ->
|
|
149
|
+
| Human-readable logs | Plugin -> OTLP collector -> ControlTower API -> ClickHouse | Bounded operator log records only. No raw prompts or tool payloads. |
|
|
150
|
+
| Capture artifacts | Plugin/gateway -> Capture API -> governed redaction -> MongoDB or encrypted object storage | Small redacted text may be retained inline; large or binary redacted bodies use object storage with a manifest and preview. |
|
|
151
151
|
|
|
152
152
|
The local safe queue is removed only after required downstream delivery succeeds. If the collector or API is unavailable, retry with:
|
|
153
153
|
|
package/npm/install.js
CHANGED
|
@@ -8,10 +8,12 @@ import { aegisPaths } from "./lib/config.js";
|
|
|
8
8
|
import { parseBootstrapCommand } from "./lib/cli.js";
|
|
9
9
|
import {
|
|
10
10
|
hookFilesForCodexUninstall,
|
|
11
|
-
installAegisHooksFiles,
|
|
12
11
|
scrubAegisHooksFiles
|
|
13
12
|
} from "./lib/codex-hooks.js";
|
|
14
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
installCodexPluginAsSingleHookSource,
|
|
15
|
+
uninstallCodexPlugin
|
|
16
|
+
} from "./lib/codex-plugin.js";
|
|
15
17
|
import {
|
|
16
18
|
detectCodexHome,
|
|
17
19
|
prepareCodexPluginInstallTarget
|
|
@@ -159,22 +161,22 @@ async function runCodexPluginAction(action, paths, { softFail }) {
|
|
|
159
161
|
`Codex marketplace file not found at ${target.marketplaceFile}. Run the Aegis install command first.`
|
|
160
162
|
);
|
|
161
163
|
}
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
164
|
+
const scrubResults = await installCodexPluginAsSingleHookSource({
|
|
165
|
+
marketplaceFile: target.marketplaceFile,
|
|
166
|
+
legacyHookFiles: hookFilesForCodexUninstall({
|
|
165
167
|
codexHome: target.codexHome,
|
|
166
168
|
userPaths: paths
|
|
167
169
|
})
|
|
168
170
|
});
|
|
169
|
-
const
|
|
170
|
-
const replacedHooks = hookInstallResults.reduce((sum, result) => sum + result.replaced, 0);
|
|
171
|
-
await installCodexPlugin({ marketplaceFile: target.marketplaceFile });
|
|
171
|
+
const removedHooks = scrubResults.reduce((sum, result) => sum + result.removed, 0);
|
|
172
172
|
if (target.mirrored) {
|
|
173
173
|
console.log(`Prepared Codex-isolated Aegis runtime: ${target.codexHome}`);
|
|
174
174
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
if (removedHooks > 0) {
|
|
176
|
+
console.log(
|
|
177
|
+
`Removed ${removedHooks} legacy Aegis hook entr${removedHooks === 1 ? "y" : "ies"} from Codex hooks.json`
|
|
178
|
+
);
|
|
179
|
+
}
|
|
178
180
|
console.log("Codex plugin installed: aegis@aegis");
|
|
179
181
|
return 0;
|
|
180
182
|
}
|
package/npm/lib/codex-plugin.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
|
|
4
|
+
import { scrubAegisHooksFiles } from "./codex-hooks.js";
|
|
5
|
+
|
|
4
6
|
export const DEFAULT_CODEX_PLUGIN_ID = "aegis@aegis";
|
|
5
7
|
export const DEFAULT_CODEX_PLUGIN_NAME = "aegis";
|
|
6
8
|
|
|
@@ -55,6 +57,16 @@ export async function installCodexPlugin({
|
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
59
|
|
|
60
|
+
export async function installCodexPluginAsSingleHookSource({
|
|
61
|
+
legacyHookFiles,
|
|
62
|
+
marketplaceFile,
|
|
63
|
+
installPlugin = installCodexPlugin,
|
|
64
|
+
scrubHooks = scrubAegisHooksFiles
|
|
65
|
+
}) {
|
|
66
|
+
await installPlugin({ marketplaceFile });
|
|
67
|
+
return await scrubHooks(legacyHookFiles);
|
|
68
|
+
}
|
|
69
|
+
|
|
58
70
|
export async function uninstallCodexPlugin({
|
|
59
71
|
codexCommand = "codex",
|
|
60
72
|
pluginId = DEFAULT_CODEX_PLUGIN_ID,
|
package/npm/lib/config.js
CHANGED
|
@@ -68,7 +68,6 @@ export function buildLocalConfig({
|
|
|
68
68
|
captureEndpoint,
|
|
69
69
|
capturePolicy,
|
|
70
70
|
installationId,
|
|
71
|
-
activityLogEndpoint,
|
|
72
71
|
otlpHttpBaseUrl,
|
|
73
72
|
otlpTracesEndpoint,
|
|
74
73
|
organizationId,
|
|
@@ -91,10 +90,6 @@ export function buildLocalConfig({
|
|
|
91
90
|
"OTLP HTTP base URL is required; pass otlpHttpBaseUrl or otlpTracesEndpoint"
|
|
92
91
|
);
|
|
93
92
|
}
|
|
94
|
-
const normalizedActivityLogEndpoint =
|
|
95
|
-
activityLogEndpoint === undefined || activityLogEndpoint === null || String(activityLogEndpoint).trim() === ""
|
|
96
|
-
? `${normalizedApiBaseUrl}/v1/agent-activity/logs`
|
|
97
|
-
: String(activityLogEndpoint).trim().replace(/\/+$/, "");
|
|
98
93
|
const normalizedCaptureEndpoint = normalizeCaptureEndpoint({
|
|
99
94
|
apiBaseUrl: normalizedApiBaseUrl,
|
|
100
95
|
captureEndpoint
|
|
@@ -103,7 +98,6 @@ export function buildLocalConfig({
|
|
|
103
98
|
schemaVersion: "aegis.agent_config.v1",
|
|
104
99
|
agentId,
|
|
105
100
|
apiBaseUrl: normalizedApiBaseUrl,
|
|
106
|
-
activityLogEndpoint: normalizedActivityLogEndpoint,
|
|
107
101
|
captureEndpoint: normalizedCaptureEndpoint,
|
|
108
102
|
capturePolicy,
|
|
109
103
|
installationId,
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "aegis.agent_release_manifest.v1",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"releaseBaseUrl": "https://aegisagentics.com/releases/aegis-agent",
|
|
5
|
-
"createdAt": "2026-10-
|
|
5
|
+
"createdAt": "2026-10-29T09:20:59.864Z",
|
|
6
6
|
"artifacts": {
|
|
7
7
|
"darwin-arm64": {
|
|
8
|
-
"path": "versions/0.2.
|
|
9
|
-
"sha256": "
|
|
10
|
-
"sizeBytes":
|
|
8
|
+
"path": "versions/0.2.3/darwin-arm64/aegis-agent.tar.gz",
|
|
9
|
+
"sha256": "4b98c1192c635337eb1d03b5f3dbdc0618408ef06bfa299d208181f5ee905dc5",
|
|
10
|
+
"sizeBytes": 2337557
|
|
11
11
|
},
|
|
12
12
|
"darwin-x64": {
|
|
13
|
-
"path": "versions/0.2.
|
|
14
|
-
"sha256": "
|
|
15
|
-
"sizeBytes":
|
|
13
|
+
"path": "versions/0.2.3/darwin-x64/aegis-agent.tar.gz",
|
|
14
|
+
"sha256": "166f2eefaaab9aefba640277d83bf01c76ede875e3c29dfec59d0a50855a3220",
|
|
15
|
+
"sizeBytes": 2441306
|
|
16
16
|
},
|
|
17
17
|
"linux-x64": {
|
|
18
|
-
"path": "versions/0.2.
|
|
19
|
-
"sha256": "
|
|
20
|
-
"sizeBytes":
|
|
18
|
+
"path": "versions/0.2.3/linux-x64/aegis-agent.tar.gz",
|
|
19
|
+
"sha256": "5aa2539a3829ca805ec262cf46ecaa7597ee4b9cbdd297a3ebced2338dd8d09a",
|
|
20
|
+
"sizeBytes": 2575075
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
}
|