opencode-code-archaeology 2.0.2 → 2.2.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/.github/pull_request_template.md +1 -0
- package/.github/workflows/release.yml +46 -0
- package/AGENTS.md +42 -10
- package/CHANGELOG.md +59 -0
- package/CONTRIBUTING.md +2 -0
- package/INSTALL.md +90 -20
- package/README.md +90 -29
- package/VERSION +1 -1
- package/assets/code-archaeology-banner.svg +173 -44
- package/commands/code-archaeology.md +7 -5
- package/dist/cli.js +28 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/platform.d.ts +4 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +11 -0
- package/dist/platform.js.map +1 -0
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +2 -1
- package/dist/plugin.js.map +1 -1
- package/dist/runtime.d.ts +18 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +49 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +1 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/docs/ARCHITECTURE.md +41 -10
- package/docs/INSTALL.md +50 -11
- package/docs/README.md +37 -9
- package/docs/RELEASE.md +20 -16
- package/docs/index.html +740 -0
- package/hooks/hermes/runner.ps1 +247 -0
- package/hooks/hermes/runner.sh +262 -0
- package/hooks/hermes/setup.ps1 +41 -0
- package/hooks/hermes/setup.sh +41 -0
- package/hooks/opencode/init.ps1 +83 -0
- package/hooks/opencode/revert-phase.ps1 +12 -0
- package/hooks/opencode/revert-phase.sh +3 -8
- package/hooks/opencode/update-expedition.ps1 +51 -0
- package/hooks/opencode/verify-package.sh +1 -0
- package/hooks/opencode/verify-phase.ps1 +35 -0
- package/hooks/opencode/verify-phase.sh +7 -7
- package/hooks/shared/command-utils.ps1 +100 -0
- package/package.json +16 -2
- package/skills/code-archaeology/SKILL.md +2 -2
- package/skills/hermes/INTEGRATION.md +120 -0
- package/skills/hermes/README.md +167 -0
- package/skills/hermes/code-archaeology-prompt.md +203 -0
- package/wiki/Expedition-Workflow.md +3 -1
- package/wiki/Home.md +2 -2
- package/wiki/Installation.md +2 -0
- package/wiki/Release-Process.md +5 -5
- package/plugins/code-archaeology.ts +0 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const id = "code-archaeology";
|
|
3
|
-
export declare const repoRoot: string;
|
|
4
|
-
export declare const version: string;
|
|
5
|
-
export declare function server(): Promise<PluginServer>;
|
|
1
|
+
export { codeArchaeologyPlugin as default } from "./runtime.js";
|
|
6
2
|
export * from "./types.js";
|
|
7
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAChE,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
import { dirname, resolve } from "node:path";
|
|
3
|
-
import { readFileSync } from "node:fs";
|
|
4
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = dirname(__filename);
|
|
6
|
-
const packageRoot = resolve(__dirname, "..");
|
|
7
|
-
export const id = "code-archaeology";
|
|
8
|
-
export const repoRoot = packageRoot;
|
|
9
|
-
const versionPath = resolve(packageRoot, "VERSION");
|
|
10
|
-
export const version = readFileSync(versionPath, "utf8").trim();
|
|
11
|
-
export async function server() {
|
|
12
|
-
return {
|
|
13
|
-
event() {
|
|
14
|
-
return undefined;
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
}
|
|
1
|
+
export { codeArchaeologyPlugin as default } from "./runtime.js";
|
|
18
2
|
export * from "./types.js";
|
|
19
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAChE,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/platform.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
export function isWindows() {
|
|
3
|
+
return process.platform === "win32";
|
|
4
|
+
}
|
|
5
|
+
export function getHookExtension() {
|
|
6
|
+
return isWindows() ? ".ps1" : ".sh";
|
|
7
|
+
}
|
|
8
|
+
export function getShellCommand() {
|
|
9
|
+
return isWindows() ? "powershell.exe" : "bash";
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export
|
|
1
|
+
export { codeArchaeologyPlugin as default } from "./runtime.js";
|
|
2
|
+
export * from "./types.js";
|
|
3
3
|
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAChE,cAAc,YAAY,CAAC"}
|
package/dist/plugin.js
CHANGED
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAChE,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const packageRoot: string;
|
|
2
|
+
export declare const id = "code-archaeology";
|
|
3
|
+
export declare const repoRoot: string;
|
|
4
|
+
export declare const version: string;
|
|
5
|
+
type OpenCodeConfig = {
|
|
6
|
+
command?: Record<string, {
|
|
7
|
+
template: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
}>;
|
|
10
|
+
skills?: {
|
|
11
|
+
paths?: string[];
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare function codeArchaeologyPlugin(): Promise<{
|
|
15
|
+
config(config: OpenCodeConfig): void;
|
|
16
|
+
}>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW,QAA2B,CAAC;AACpD,eAAO,MAAM,EAAE,qBAAqB,CAAC;AACrC,eAAO,MAAM,QAAQ,QAAc,CAAC;AAGpC,eAAO,MAAM,OAAO,QAA2C,CAAC;AAEhE,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH,CAAC;AA6BF,wBAAsB,qBAAqB;mBAIxB,cAAc;GAYhC"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = dirname(__filename);
|
|
6
|
+
export const packageRoot = resolve(__dirname, "..");
|
|
7
|
+
export const id = "code-archaeology";
|
|
8
|
+
export const repoRoot = packageRoot;
|
|
9
|
+
const versionPath = resolve(packageRoot, "VERSION");
|
|
10
|
+
export const version = readFileSync(versionPath, "utf8").trim();
|
|
11
|
+
const commandFiles = [
|
|
12
|
+
"code-archaeology",
|
|
13
|
+
"code-archaeology-survey",
|
|
14
|
+
"code-archaeology-excavate",
|
|
15
|
+
"code-archaeology-restore",
|
|
16
|
+
];
|
|
17
|
+
function parseCommand(name) {
|
|
18
|
+
const template = readFileSync(resolve(packageRoot, "commands", `${name}.md`), "utf8");
|
|
19
|
+
const match = template.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
20
|
+
if (!match) {
|
|
21
|
+
return { template };
|
|
22
|
+
}
|
|
23
|
+
const description = match[1]
|
|
24
|
+
.split("\n")
|
|
25
|
+
.find((line) => line.startsWith("description:"))
|
|
26
|
+
?.slice("description:".length)
|
|
27
|
+
.trim();
|
|
28
|
+
return { template: match[2].trimStart(), description };
|
|
29
|
+
}
|
|
30
|
+
function loadCommands() {
|
|
31
|
+
return Object.fromEntries(commandFiles.map((name) => [name, parseCommand(name)]));
|
|
32
|
+
}
|
|
33
|
+
export async function codeArchaeologyPlugin() {
|
|
34
|
+
const skillsPath = resolve(packageRoot, "skills");
|
|
35
|
+
return {
|
|
36
|
+
config(config) {
|
|
37
|
+
config.command = {
|
|
38
|
+
...(config.command ?? {}),
|
|
39
|
+
...loadCommands(),
|
|
40
|
+
};
|
|
41
|
+
config.skills = config.skills ?? {};
|
|
42
|
+
config.skills.paths = config.skills.paths ?? [];
|
|
43
|
+
if (!config.skills.paths.includes(skillsPath)) {
|
|
44
|
+
config.skills.paths.push(skillsPath);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAC;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAShE,MAAM,YAAY,GAAG;IACnB,kBAAkB;IAClB,yBAAyB;IACzB,2BAA2B;IAC3B,0BAA0B;CAClB,CAAC;AAEX,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;SACzB,KAAK,CAAC,IAAI,CAAC;SACX,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAChD,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;SAC7B,IAAI,EAAE,CAAC;IAEV,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAElD,OAAO;QACL,MAAM,CAAC,MAAsB;YAC3B,MAAM,CAAC,OAAO,GAAG;gBACf,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;gBACzB,GAAG,YAAY,EAAE;aAClB,CAAC;YACF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export type ConfidenceLevel = "HIGH" | "MEDIUM" | "LOW";
|
|
|
15
15
|
/** Status values for expedition progress. */
|
|
16
16
|
export type ExpeditionStatus = "pending" | "running" | "complete" | "failed" | "skipped";
|
|
17
17
|
/** Tool types used for analysis. */
|
|
18
|
-
export type AnalysisTool = "knip" | "vulture" | "madge" | "pydeps" | "jscpd" | "tsc" | "mypy" | "ast_grep" | "manual";
|
|
18
|
+
export type AnalysisTool = "knip" | "unimported" | "depcheck" | "vulture" | "deadcode" | "staticcheck" | "cargo-udeps" | "rustc" | "madge" | "pydeps" | "godepgraph" | "cargo-deps" | "jscpd" | "tsc" | "mypy" | "go vet" | "pylint" | "golangci-lint" | "clippy" | "ast_grep" | "manual";
|
|
19
19
|
/** Event types emitted by the plugin. */
|
|
20
20
|
export type EventType = "phase_complete" | "phase_failed" | "finding_detected" | "report_generated";
|
|
21
21
|
/** Runtime parameters for an archaeology session. */
|
|
@@ -231,11 +231,6 @@ export interface FinalCatalog {
|
|
|
231
231
|
/** Recommendations for future maintenance. */
|
|
232
232
|
recommendations: string[];
|
|
233
233
|
}
|
|
234
|
-
/** Minimal OpenCode plugin server shape. */
|
|
235
|
-
export interface PluginServer {
|
|
236
|
-
/** Event handler (currently a no-op stub). */
|
|
237
|
-
event(): undefined;
|
|
238
|
-
}
|
|
239
234
|
/** CLI argument shape for `opencode-code-archaeology`. */
|
|
240
235
|
export interface CliArgs {
|
|
241
236
|
/** Target repository path. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgFH,oCAAoC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,YAAY;IACtB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,UAAU;IACxB,iBAAiB,EAAE,kBAAkB;IACrC,WAAW,EAAE,sBAAsB;CACpC,CAAC"}
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Code Archaeology Architecture
|
|
2
2
|
|
|
3
|
-
Code Archaeology is
|
|
3
|
+
Code Archaeology is a multi-runtime plugin that operates entirely inside the target repository. It coordinates slash commands (OpenCode), cron-based execution (Hermes), a domain skill, shell hooks, prompts, schemas, and local `.archaeology/` artifacts to run a fixed excavation workflow.
|
|
4
4
|
|
|
5
5
|
## Repository Layout
|
|
6
6
|
|
|
@@ -11,39 +11,56 @@ Code-Archaeology/
|
|
|
11
11
|
|-- dist/ # Built package output for GitHub-based installs
|
|
12
12
|
|-- docs/ # Public documentation and release notes
|
|
13
13
|
|-- hooks/opencode/ # Init, verification, revert, and status hooks
|
|
14
|
-
|--
|
|
14
|
+
|-- hooks/hermes/ # Setup and runner hooks for Hermes Agent
|
|
15
|
+
|-- plugins/ # Repo-local legacy plugin shim
|
|
15
16
|
|-- prompts/ # Expedition prompts by phase
|
|
16
17
|
|-- schema/ # JSON schemas for reports
|
|
17
|
-
|-- skills/ # Code Archaeology skill
|
|
18
|
+
|-- skills/ # Code Archaeology skill definitions
|
|
19
|
+
| |-- code-archaeology/ # OpenCode skill
|
|
20
|
+
| `-- hermes/ # Hermes Agent skill and integration docs
|
|
18
21
|
|-- src/ # TypeScript package and CLI source
|
|
19
22
|
|-- wiki/ # Source pages for GitHub Wiki publication
|
|
20
23
|
|-- INSTALL.md # Root install handoff
|
|
21
24
|
|-- README.md # Public project overview
|
|
22
|
-
|
|
25
|
+
|-- AGENTS.md # Agent runtime guide
|
|
23
26
|
```
|
|
24
27
|
|
|
25
|
-
##
|
|
28
|
+
## Runtime Surfaces
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- `
|
|
30
|
+
### OpenCode Plugin Surfaces
|
|
31
|
+
|
|
32
|
+
- `dist/index.js` and the `./plugin` package export expose the plugin entry point consumed by OpenCode. `plugins/` is a repo-local legacy shim and is not included in npm package contents.
|
|
33
|
+
- `commands/` defines the slash command family: `/code-archaeology`, `/code-archaeology-survey`, `/code-archaeology-excavate`, and `/code-archaeology-restore`. The default `/code-archaeology` command runs the full survey chain without per-phase prompts and remains non-destructive.
|
|
34
|
+
- `skills/code-archaeology/` contains the domain workflow instructions agents follow during an expedition.
|
|
30
35
|
- `hooks/opencode/` provides shell gates for session setup, verification, rollback, and status updates.
|
|
31
36
|
- `prompts/` and `schema/` provide phase-specific guidance and artifact structure.
|
|
32
37
|
- `src/` builds the npm package and CLI used by `opencode-code-archaeology install`, `doctor`, and `version`.
|
|
33
38
|
|
|
39
|
+
### Hermes Agent Surfaces
|
|
40
|
+
|
|
41
|
+
- `hooks/hermes/setup.sh` detects Hermes capabilities and writes `hermes-runtime.json`.
|
|
42
|
+
- `hooks/hermes/runner.sh` executes one expedition phase per cron run with built-in verification.
|
|
43
|
+
- `skills/hermes/` contains the Hermes-specific skill prompt, integration guide, and README.
|
|
44
|
+
- Hermes uses the same `.archaeology/session.json` state file as OpenCode.
|
|
45
|
+
|
|
34
46
|
## Commands, Skills, And Hooks
|
|
35
47
|
|
|
36
|
-
Commands are the user-facing entry points.
|
|
48
|
+
Commands are the user-facing entry points. `/code-archaeology` selects survey mode by default and runs all 10 phases to produce reports. The explicit restore command is required before source files are changed.
|
|
37
49
|
|
|
38
50
|
The Code Archaeology skill defines the expedition order, safety constraints, language-tool preferences, and reporting expectations. It is the agent-facing control layer that prevents phases from running out of order.
|
|
39
51
|
|
|
40
52
|
Hooks are the shell-level enforcement layer:
|
|
41
53
|
|
|
54
|
+
### OpenCode hooks
|
|
42
55
|
- `init.sh` initializes `.archaeology/` and session state.
|
|
43
56
|
- `verify-phase.sh <phase>` runs configured tests and type checks between phases.
|
|
44
57
|
- `revert-phase.sh <phase>` reverts changes when a restore phase fails verification.
|
|
45
58
|
- `update-expedition.sh <phase> <status> [findings]` updates session progress.
|
|
46
59
|
|
|
60
|
+
### Hermes hooks
|
|
61
|
+
- `setup.sh` detects Hermes CLI / active session and writes runtime config.
|
|
62
|
+
- `runner.sh` reads session state, executes one phase, verifies, and advances.
|
|
63
|
+
|
|
47
64
|
## Expedition Flow
|
|
48
65
|
|
|
49
66
|
The phase order is fixed because later cleanup depends on earlier evidence:
|
|
@@ -61,6 +78,18 @@ The phase order is fixed because later cleanup depends on earlier evidence:
|
|
|
61
78
|
|
|
62
79
|
`survey` mode writes reports only. `excavate` mode writes reports plus mock patches. `restore` mode applies approved changes and must pass verification between phases.
|
|
63
80
|
|
|
81
|
+
## Runtime Comparison
|
|
82
|
+
|
|
83
|
+
| Feature | OpenCode | Hermes |
|
|
84
|
+
|---------|----------|--------|
|
|
85
|
+
| Entry | `/code-archaeology` slash command | `cronjob` |
|
|
86
|
+
| Phases | All in one session | One per cron run |
|
|
87
|
+
| Verification | Between expeditions | Between every phase |
|
|
88
|
+
| Revert | Manual or automatic | Automatic on failure |
|
|
89
|
+
| State | `.archaeology/session.json` | Same file |
|
|
90
|
+
| Background | Plugin stays active | Cron resumes automatically |
|
|
91
|
+
| Real-time | Yes | Delayed (15-min intervals) |
|
|
92
|
+
|
|
64
93
|
## Artifact Lifecycle
|
|
65
94
|
|
|
66
95
|
Runtime artifacts live in `.archaeology/` inside the target repository:
|
|
@@ -73,6 +102,7 @@ Runtime artifacts live in `.archaeology/` inside the target repository:
|
|
|
73
102
|
| `FINAL_CATALOG.md` | Final excavation summary and recommendations. |
|
|
74
103
|
| `excavation_log.txt` | `git diff --stat` for applied restoration work. |
|
|
75
104
|
| `patches/` | Mock patches generated by `excavate` mode. |
|
|
105
|
+
| `hermes-runtime.json` | Hermes runtime configuration (Hermes only). |
|
|
76
106
|
|
|
77
107
|
`.archaeology/` is ignored local state and should not be committed.
|
|
78
108
|
|
|
@@ -83,7 +113,8 @@ Runtime artifacts live in `.archaeology/` inside the target repository:
|
|
|
83
113
|
- Never consolidate types before dead code and legacy removal.
|
|
84
114
|
- Never remove try/catch blocks from I/O or external input boundaries automatically.
|
|
85
115
|
- Flag uncertain type replacements for human review instead of guessing.
|
|
86
|
-
- Run `verify-phase.sh` between restore phases.
|
|
116
|
+
- Run `verify-phase.sh` between restore phases (OpenCode).
|
|
117
|
+
- Run built-in verification in `runner.sh` between phases (Hermes).
|
|
87
118
|
- Run `revert-phase.sh` and stop if a phase introduces test failures.
|
|
88
119
|
- Keep restore work isolated to the configured branch, `refactor/archaeology` by default.
|
|
89
120
|
|
package/docs/INSTALL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Install Code Archaeology
|
|
2
2
|
|
|
3
|
-
This guide mirrors the root [`INSTALL.md`](../INSTALL.md) and covers the recommended OpenCode plugin configuration
|
|
3
|
+
This guide mirrors the root [`INSTALL.md`](../INSTALL.md) and covers the recommended OpenCode plugin configuration, npm CLI install path, and Hermes Agent setup.
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
@@ -8,6 +8,7 @@ This guide mirrors the root [`INSTALL.md`](../INSTALL.md) and covers the recomme
|
|
|
8
8
|
- Node.js 18 or newer with npm.
|
|
9
9
|
- Git installed and available in your shell.
|
|
10
10
|
- A target repository with tests or type checks before running `restore` mode.
|
|
11
|
+
- For Hermes: Hermes Agent CLI or an active Hermes session.
|
|
11
12
|
|
|
12
13
|
## Recommended OpenCode Plugin Install
|
|
13
14
|
|
|
@@ -16,7 +17,7 @@ Add Code Archaeology to the top-level `plugin` array in `opencode.json`:
|
|
|
16
17
|
```json
|
|
17
18
|
{
|
|
18
19
|
"plugin": [
|
|
19
|
-
"opencode-code-archaeology@
|
|
20
|
+
"opencode-code-archaeology@2.2.0"
|
|
20
21
|
]
|
|
21
22
|
}
|
|
22
23
|
```
|
|
@@ -30,12 +31,14 @@ Restart OpenCode after editing the configuration. The command family should then
|
|
|
30
31
|
/code-archaeology-restore
|
|
31
32
|
```
|
|
32
33
|
|
|
34
|
+
`/code-archaeology` runs the full 10-phase survey chain by default without per-phase prompts. It writes reports under `.archaeology/` and makes no source-code changes. Use `/code-archaeology-restore` only after reviewing the reports and deciding to apply changes.
|
|
35
|
+
|
|
33
36
|
## npm Global Install
|
|
34
37
|
|
|
35
38
|
Use the npm package when you want the CLI installer and diagnostics:
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
|
-
npm install -g opencode-code-archaeology
|
|
41
|
+
npm install -g opencode-code-archaeology@2.2.0
|
|
39
42
|
opencode-code-archaeology install
|
|
40
43
|
opencode-code-archaeology doctor
|
|
41
44
|
opencode-code-archaeology version
|
|
@@ -44,9 +47,31 @@ opencode-code-archaeology version
|
|
|
44
47
|
Then restart OpenCode and run:
|
|
45
48
|
|
|
46
49
|
```text
|
|
47
|
-
/code-archaeology
|
|
50
|
+
/code-archaeology
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Hermes Setup
|
|
54
|
+
|
|
55
|
+
Install the CLI globally so Hermes can invoke Code Archaeology commands. To initialize Hermes runtime metadata, run the hook from a local clone or from the unpacked package contents:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npm install -g opencode-code-archaeology@2.2.0
|
|
59
|
+
cd ~/projects/Code-Archaeology
|
|
60
|
+
bash hooks/hermes/setup.sh
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Create a cronjob that runs exactly one expedition phase per invocation:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
hermes cronjob create \
|
|
67
|
+
--name "code-archaeology-expedition" \
|
|
68
|
+
--schedule "every 15m" \
|
|
69
|
+
--workdir ~/projects/Code-Archaeology \
|
|
70
|
+
--prompt "Run one Code Archaeology expedition phase. Read .archaeology/session.json, execute current phase with verification, advance to next phase."
|
|
48
71
|
```
|
|
49
72
|
|
|
73
|
+
See [`skills/hermes/INTEGRATION.md`](../skills/hermes/INTEGRATION.md) for the full Hermes workflow.
|
|
74
|
+
|
|
50
75
|
## Verification
|
|
51
76
|
|
|
52
77
|
Confirm the published package and local CLI are visible:
|
|
@@ -65,24 +90,25 @@ npm install
|
|
|
65
90
|
npm run build
|
|
66
91
|
npm run typecheck
|
|
67
92
|
bash -n hooks/opencode/*.sh
|
|
93
|
+
bash -n hooks/hermes/*.sh
|
|
68
94
|
```
|
|
69
95
|
|
|
70
96
|
To verify plugin behavior, restart OpenCode in a Git repository and run:
|
|
71
97
|
|
|
72
98
|
```text
|
|
73
|
-
/code-archaeology
|
|
99
|
+
/code-archaeology
|
|
74
100
|
```
|
|
75
101
|
|
|
76
|
-
The survey should create `.archaeology/` reports without modifying source files.
|
|
102
|
+
The default survey chain should create `.archaeology/` reports without modifying source files or asking to proceed phase by phase.
|
|
77
103
|
|
|
78
104
|
## Updating
|
|
79
105
|
|
|
80
|
-
For plugin-array installs, update
|
|
106
|
+
For plugin-array installs, update by changing the package version to a reviewed npm release, then restart OpenCode. Do not point OpenCode at a mutable Git branch such as `main` for automatic updates.
|
|
81
107
|
|
|
82
108
|
For npm global installs:
|
|
83
109
|
|
|
84
110
|
```bash
|
|
85
|
-
npm install -g opencode-code-archaeology@
|
|
111
|
+
npm install -g opencode-code-archaeology@2.2.0
|
|
86
112
|
npm list -g opencode-code-archaeology --depth=0
|
|
87
113
|
opencode-code-archaeology doctor
|
|
88
114
|
```
|
|
@@ -94,13 +120,26 @@ opencode-code-archaeology doctor
|
|
|
94
120
|
- Confirm `opencode.json` is valid JSON.
|
|
95
121
|
- Confirm the package entry is in the top-level `plugin` array, not `plugins`.
|
|
96
122
|
- Restart OpenCode after changing configuration.
|
|
97
|
-
- Confirm
|
|
123
|
+
- Confirm npm can resolve the pinned `opencode-code-archaeology` release.
|
|
98
124
|
|
|
99
125
|
### Commands Not Found
|
|
100
126
|
|
|
101
127
|
- Restart OpenCode so it reloads plugin commands.
|
|
102
128
|
- Confirm the npm package installed with `npm list -g opencode-code-archaeology --depth=0` if using the global path.
|
|
103
|
-
- Run `/code-archaeology
|
|
129
|
+
- Run `/code-archaeology` from inside a Git repository.
|
|
130
|
+
|
|
131
|
+
### Cron Not Running
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
hermes cronjob list
|
|
135
|
+
hermes cronjob log code-archaeology-expedition
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Phase Blocked
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
cat .archaeology/session.json | jq '.flags.blocked_reason'
|
|
142
|
+
```
|
|
104
143
|
|
|
105
144
|
### Stale Cache
|
|
106
145
|
|
|
@@ -110,7 +149,7 @@ opencode-code-archaeology doctor
|
|
|
110
149
|
|
|
111
150
|
### Restore Safety
|
|
112
151
|
|
|
113
|
-
- Start with `/code-archaeology
|
|
152
|
+
- Start with `/code-archaeology`; it writes reports only.
|
|
114
153
|
- Review `.archaeology/site_survey.md` and expedition reports before restore.
|
|
115
154
|
- Use `/code-archaeology-excavate` for mock patches if you want another review gate.
|
|
116
155
|
- Run `/code-archaeology-restore` only when the target repository has tests or type checks available.
|
package/docs/README.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# Code Archaeology Documentation
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Excavate technical debt. Restore with confidence.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Code Archaeology is a multi-runtime plugin for systematic codebase excavation, cataloging, and restoration. It supports both **OpenCode** (interactive slash commands) and **Hermes Agent** (cron-based background execution). It runs inside the target repository, writes local `.archaeology/` reports, and only modifies source files in `restore` mode after review and verification.
|
|
6
|
+
|
|
7
|
+
The public landing page is [`index.html`](index.html). These Markdown files remain the detailed documentation source.
|
|
6
8
|
|
|
7
9
|
## Quick Links
|
|
8
10
|
|
|
@@ -12,24 +14,33 @@ These Markdown files are ready to serve from GitHub Pages, but this repository d
|
|
|
12
14
|
- [Security Audit](SECURITY_AUDIT.md)
|
|
13
15
|
- [Repository README](../README.md)
|
|
14
16
|
- [Root Install Handoff](../INSTALL.md)
|
|
17
|
+
- [Hermes Integration](../skills/hermes/INTEGRATION.md)
|
|
18
|
+
- [Hermes Skill](../skills/hermes/README.md)
|
|
15
19
|
|
|
16
20
|
## Quick Start
|
|
17
21
|
|
|
22
|
+
### OpenCode
|
|
23
|
+
|
|
18
24
|
Install the package globally, register the plugin, then verify the CLI:
|
|
19
25
|
|
|
20
26
|
```bash
|
|
21
|
-
npm install -g opencode-code-archaeology
|
|
22
|
-
opencode-code-archaeology install
|
|
23
|
-
opencode-code-archaeology doctor
|
|
24
|
-
opencode-code-archaeology version
|
|
27
|
+
npm install -g opencode-code-archaeology@2.2.0 && opencode-code-archaeology install && opencode-code-archaeology doctor
|
|
25
28
|
```
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
Or tell OpenCode:
|
|
28
31
|
|
|
29
32
|
```text
|
|
30
|
-
/code-archaeology-
|
|
33
|
+
Fetch and follow the instructions in the installed package's INSTALL.md at $(npm root -g)/opencode-code-archaeology/INSTALL.md for opencode-code-archaeology@2.2.0
|
|
31
34
|
```
|
|
32
35
|
|
|
36
|
+
Restart OpenCode in the repository you want to inspect and start with the non-destructive default command:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
/code-archaeology
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This runs the full 10-phase survey chain without per-phase prompts, writes reports under `.archaeology/`, and makes no source-code changes.
|
|
43
|
+
|
|
33
44
|
Review `.archaeology/site_survey.md` and expedition reports before using:
|
|
34
45
|
|
|
35
46
|
```text
|
|
@@ -37,8 +48,25 @@ Review `.archaeology/site_survey.md` and expedition reports before using:
|
|
|
37
48
|
/code-archaeology-restore
|
|
38
49
|
```
|
|
39
50
|
|
|
51
|
+
### Hermes Agent
|
|
52
|
+
|
|
53
|
+
Setup the Hermes runtime and create a cronjob:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
cd ~/projects/Code-Archaeology
|
|
57
|
+
bash hooks/hermes/setup.sh
|
|
58
|
+
|
|
59
|
+
hermes cronjob create \
|
|
60
|
+
--name "code-archaeology-expedition" \
|
|
61
|
+
--schedule "every 15m" \
|
|
62
|
+
--workdir ~/projects/Code-Archaeology \
|
|
63
|
+
--prompt "Run one Code Archaeology expedition phase. Read .archaeology/session.json, execute current phase with test/typecheck verification, advance to next phase. STOP after one phase."
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Each cron run executes exactly **one** phase. Ten phases complete in ~2.5 hours minimum.
|
|
67
|
+
|
|
40
68
|
## Safety Warning
|
|
41
69
|
|
|
42
|
-
`survey
|
|
70
|
+
`/code-archaeology` defaults to survey mode and writes reports only. `excavate` mode writes reports and mock patches. `restore` mode can edit source files and should only run after report review, on an isolated branch, with tests or type checks available.
|
|
43
71
|
|
|
44
72
|
Do not commit `.archaeology/`; it is local runtime state.
|