@autonav/core 1.6.0 → 1.7.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/README.md +2 -2
- package/dist/adapter/index.d.ts +3 -3
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/adapter/index.js +3 -3
- package/dist/adapter/index.js.map +1 -1
- package/dist/adapter/navigator-adapter.d.ts +196 -0
- package/dist/adapter/navigator-adapter.d.ts.map +1 -0
- package/dist/adapter/navigator-adapter.js +579 -0
- package/dist/adapter/navigator-adapter.js.map +1 -0
- package/dist/cli/autonav.d.ts +2 -6
- package/dist/cli/autonav.d.ts.map +1 -1
- package/dist/cli/autonav.js +32 -53
- package/dist/cli/autonav.js.map +1 -1
- package/dist/cli/nav-chat.d.ts +2 -1
- package/dist/cli/nav-chat.d.ts.map +1 -1
- package/dist/cli/nav-chat.js +32 -3
- package/dist/cli/nav-chat.js.map +1 -1
- package/dist/cli/nav-init.d.ts +2 -1
- package/dist/cli/nav-init.d.ts.map +1 -1
- package/dist/cli/nav-init.js +12 -4
- package/dist/cli/nav-init.js.map +1 -1
- package/dist/cli/nav-install.d.ts +2 -1
- package/dist/cli/nav-install.d.ts.map +1 -1
- package/dist/cli/nav-install.js +4 -2
- package/dist/cli/nav-install.js.map +1 -1
- package/dist/cli/nav-memento.d.ts +3 -2
- package/dist/cli/nav-memento.d.ts.map +1 -1
- package/dist/cli/nav-memento.js +12 -6
- package/dist/cli/nav-memento.js.map +1 -1
- package/dist/cli/nav-mend.d.ts +2 -1
- package/dist/cli/nav-mend.d.ts.map +1 -1
- package/dist/cli/nav-mend.js +4 -1
- package/dist/cli/nav-mend.js.map +1 -1
- package/dist/cli/nav-migrate.d.ts +2 -1
- package/dist/cli/nav-migrate.d.ts.map +1 -1
- package/dist/cli/nav-migrate.js +2 -6
- package/dist/cli/nav-migrate.js.map +1 -1
- package/dist/cli/nav-query.d.ts +2 -1
- package/dist/cli/nav-query.d.ts.map +1 -1
- package/dist/cli/nav-query.js +12 -6
- package/dist/cli/nav-query.js.map +1 -1
- package/dist/cli/nav-standup.d.ts +18 -0
- package/dist/cli/nav-standup.d.ts.map +1 -0
- package/dist/cli/nav-standup.js +151 -0
- package/dist/cli/nav-standup.js.map +1 -0
- package/dist/cli/nav-uninstall.d.ts +2 -1
- package/dist/cli/nav-uninstall.d.ts.map +1 -1
- package/dist/cli/nav-uninstall.js +4 -2
- package/dist/cli/nav-uninstall.js.map +1 -1
- package/dist/cli/nav-update.d.ts +2 -1
- package/dist/cli/nav-update.d.ts.map +1 -1
- package/dist/cli/nav-update.js +11 -6
- package/dist/cli/nav-update.js.map +1 -1
- package/dist/conversation/App.d.ts +9 -2
- package/dist/conversation/App.d.ts.map +1 -1
- package/dist/conversation/App.js +304 -111
- package/dist/conversation/App.js.map +1 -1
- package/dist/conversation/index.d.ts +5 -0
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +17 -2
- package/dist/conversation/index.js.map +1 -1
- package/dist/harness/chibi-harness.d.ts +36 -0
- package/dist/harness/chibi-harness.d.ts.map +1 -0
- package/dist/harness/chibi-harness.js +383 -0
- package/dist/harness/chibi-harness.js.map +1 -0
- package/dist/harness/chibi-plugins/get_plugin_config +64 -0
- package/dist/harness/chibi-plugins/query_navigator +114 -0
- package/dist/harness/chibi-plugins/submit_answer +38 -0
- package/dist/harness/chibi-plugins/update_plugin_config +91 -0
- package/dist/harness/claude-code-harness.d.ts +24 -0
- package/dist/harness/claude-code-harness.d.ts.map +1 -0
- package/dist/harness/claude-code-harness.js +242 -0
- package/dist/harness/claude-code-harness.js.map +1 -0
- package/dist/harness/ephemeral-home.d.ts +34 -0
- package/dist/harness/ephemeral-home.d.ts.map +1 -0
- package/dist/harness/ephemeral-home.js +56 -0
- package/dist/harness/ephemeral-home.js.map +1 -0
- package/dist/harness/factory.d.ts +47 -0
- package/dist/harness/factory.d.ts.map +1 -0
- package/dist/harness/factory.js +84 -0
- package/dist/harness/factory.js.map +1 -0
- package/dist/harness/helpers.d.ts +58 -0
- package/dist/harness/helpers.d.ts.map +1 -0
- package/dist/harness/helpers.js +78 -0
- package/dist/harness/helpers.js.map +1 -0
- package/dist/harness/index.d.ts +14 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +13 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/opencode-harness.d.ts +79 -0
- package/dist/harness/opencode-harness.d.ts.map +1 -0
- package/dist/harness/opencode-harness.js +537 -0
- package/dist/harness/opencode-harness.js.map +1 -0
- package/dist/harness/opencode-tools/get_plugin_config.ts +72 -0
- package/dist/harness/opencode-tools/query_navigator.ts +126 -0
- package/dist/harness/opencode-tools/submit_answer.ts +40 -0
- package/dist/harness/opencode-tools/update_plugin_config.ts +105 -0
- package/dist/harness/sandbox.d.ts +59 -0
- package/dist/harness/sandbox.d.ts.map +1 -0
- package/dist/harness/sandbox.js +152 -0
- package/dist/harness/sandbox.js.map +1 -0
- package/dist/harness/tool-server.d.ts +50 -0
- package/dist/harness/tool-server.d.ts.map +1 -0
- package/dist/harness/tool-server.js +27 -0
- package/dist/harness/tool-server.js.map +1 -0
- package/dist/harness/types.d.ts +168 -0
- package/dist/harness/types.d.ts.map +1 -0
- package/dist/harness/types.js +12 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/interview/App.d.ts +4 -2
- package/dist/interview/App.d.ts.map +1 -1
- package/dist/interview/App.js +36 -56
- package/dist/interview/App.js.map +1 -1
- package/dist/interview/index.d.ts +3 -0
- package/dist/interview/index.d.ts.map +1 -1
- package/dist/interview/index.js +1 -0
- package/dist/interview/index.js.map +1 -1
- package/dist/interview/prompts.d.ts +3 -1
- package/dist/interview/prompts.d.ts.map +1 -1
- package/dist/interview/prompts.js +5 -1
- package/dist/interview/prompts.js.map +1 -1
- package/dist/interview/ui/ChatBanner.d.ts +17 -0
- package/dist/interview/ui/ChatBanner.d.ts.map +1 -0
- package/dist/interview/ui/ChatBanner.js +30 -0
- package/dist/interview/ui/ChatBanner.js.map +1 -0
- package/dist/interview/ui/ChatInput.d.ts +36 -0
- package/dist/interview/ui/ChatInput.d.ts.map +1 -0
- package/dist/interview/ui/ChatInput.js +304 -0
- package/dist/interview/ui/ChatInput.js.map +1 -0
- package/dist/interview/ui/MarkdownText.d.ts +13 -0
- package/dist/interview/ui/MarkdownText.d.ts.map +1 -0
- package/dist/interview/ui/MarkdownText.js +107 -0
- package/dist/interview/ui/MarkdownText.js.map +1 -0
- package/dist/interview/ui/index.d.ts +3 -0
- package/dist/interview/ui/index.d.ts.map +1 -1
- package/dist/interview/ui/index.js +3 -0
- package/dist/interview/ui/index.js.map +1 -1
- package/dist/memento/implementer-agent.d.ts +31 -0
- package/dist/memento/implementer-agent.d.ts.map +1 -0
- package/dist/memento/implementer-agent.js +95 -0
- package/dist/memento/implementer-agent.js.map +1 -0
- package/dist/memento/index.d.ts +6 -5
- package/dist/memento/index.d.ts.map +1 -1
- package/dist/memento/index.js +7 -5
- package/dist/memento/index.js.map +1 -1
- package/dist/memento/loop.d.ts +6 -5
- package/dist/memento/loop.d.ts.map +1 -1
- package/dist/memento/loop.js +872 -180
- package/dist/memento/loop.js.map +1 -1
- package/dist/memento/matrix-animation.d.ts +26 -0
- package/dist/memento/matrix-animation.d.ts.map +1 -1
- package/dist/memento/matrix-animation.js +93 -18
- package/dist/memento/matrix-animation.js.map +1 -1
- package/dist/memento/nav-protocol.d.ts +2 -2
- package/dist/memento/nav-protocol.d.ts.map +1 -1
- package/dist/memento/nav-protocol.js +39 -43
- package/dist/memento/nav-protocol.js.map +1 -1
- package/dist/memento/prompts.d.ts +21 -8
- package/dist/memento/prompts.d.ts.map +1 -1
- package/dist/memento/prompts.js +79 -39
- package/dist/memento/prompts.js.map +1 -1
- package/dist/memento/rate-limit.d.ts +85 -0
- package/dist/memento/rate-limit.d.ts.map +1 -0
- package/dist/memento/rate-limit.js +221 -0
- package/dist/memento/rate-limit.js.map +1 -0
- package/dist/memento/types.d.ts +6 -6
- package/dist/memento/types.d.ts.map +1 -1
- package/dist/memento/types.js +3 -3
- package/dist/memento/worker-agent.d.ts +4 -1
- package/dist/memento/worker-agent.d.ts.map +1 -1
- package/dist/memento/worker-agent.js +38 -54
- package/dist/memento/worker-agent.js.map +1 -1
- package/dist/registry.d.ts +35 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +87 -0
- package/dist/registry.js.map +1 -0
- package/dist/repo-analyzer/index.d.ts +2 -1
- package/dist/repo-analyzer/index.d.ts.map +1 -1
- package/dist/repo-analyzer/index.js +6 -17
- package/dist/repo-analyzer/index.js.map +1 -1
- package/dist/skill-generator/index.d.ts +142 -0
- package/dist/skill-generator/index.d.ts.map +1 -0
- package/dist/skill-generator/index.js +510 -0
- package/dist/skill-generator/index.js.map +1 -0
- package/dist/standup/config.d.ts +19 -0
- package/dist/standup/config.d.ts.map +1 -0
- package/dist/standup/config.js +42 -0
- package/dist/standup/config.js.map +1 -0
- package/dist/standup/index.d.ts +24 -0
- package/dist/standup/index.d.ts.map +1 -0
- package/dist/standup/index.js +29 -0
- package/dist/standup/index.js.map +1 -0
- package/dist/standup/loop.d.ts +36 -0
- package/dist/standup/loop.d.ts.map +1 -0
- package/dist/standup/loop.js +508 -0
- package/dist/standup/loop.js.map +1 -0
- package/dist/standup/prompts.d.ts +62 -0
- package/dist/standup/prompts.d.ts.map +1 -0
- package/dist/standup/prompts.js +211 -0
- package/dist/standup/prompts.js.map +1 -0
- package/dist/standup/standup-protocol.d.ts +33 -0
- package/dist/standup/standup-protocol.d.ts.map +1 -0
- package/dist/standup/standup-protocol.js +189 -0
- package/dist/standup/standup-protocol.js.map +1 -0
- package/dist/standup/types.d.ts +185 -0
- package/dist/standup/types.d.ts.map +1 -0
- package/dist/standup/types.js +67 -0
- package/dist/standup/types.js.map +1 -0
- package/dist/templates/.gitignore.template +26 -0
- package/dist/templates/CLAUDE-pack.md.template +114 -0
- package/dist/templates/CLAUDE.md.template +153 -0
- package/dist/templates/README.md.template +174 -0
- package/dist/templates/config-pack.json.template +16 -0
- package/dist/templates/config.json.template +11 -0
- package/dist/templates/index.d.ts +22 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +32 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/plugins.json.template +33 -0
- package/dist/templates/system-configuration.md.template +70 -0
- package/dist/tools/cross-nav.d.ts +21 -0
- package/dist/tools/cross-nav.d.ts.map +1 -0
- package/dist/tools/cross-nav.js +93 -0
- package/dist/tools/cross-nav.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/related-navs-config.d.ts +15 -0
- package/dist/tools/related-navs-config.d.ts.map +1 -0
- package/dist/tools/related-navs-config.js +132 -0
- package/dist/tools/related-navs-config.js.map +1 -0
- package/dist/tools/related-navs.d.ts +23 -0
- package/dist/tools/related-navs.d.ts.map +1 -0
- package/dist/tools/related-navs.js +107 -0
- package/dist/tools/related-navs.js.map +1 -0
- package/dist/tools/response.d.ts +3 -2
- package/dist/tools/response.d.ts.map +1 -1
- package/dist/tools/response.js +7 -11
- package/dist/tools/response.js.map +1 -1
- package/dist/tools/self-config.d.ts +2 -1
- package/dist/tools/self-config.d.ts.map +1 -1
- package/dist/tools/self-config.js +5 -9
- package/dist/tools/self-config.js.map +1 -1
- package/package.json +4 -1
- package/dist/memento/state.d.ts +0 -56
- package/dist/memento/state.d.ts.map +0 -1
- package/dist/memento/state.js +0 -156
- package/dist/memento/state.js.map +0 -1
- package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts +0 -18
- package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts.map +0 -1
- package/dist/migrations/versions/v1.4.0-rfc2119-skills.js +0 -207
- package/dist/migrations/versions/v1.4.0-rfc2119-skills.js.map +0 -1
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* Nav: [Uses update_plugin_config tool to schedule check-in]
|
|
12
12
|
*/
|
|
13
13
|
import { z } from "zod";
|
|
14
|
-
import { tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";
|
|
15
14
|
import { handleUpdatePluginConfig, handleGetPluginConfig, } from "./handler.js";
|
|
15
|
+
import { defineTool } from "../harness/index.js";
|
|
16
16
|
/**
|
|
17
17
|
* Available plugins that can be configured
|
|
18
18
|
*/
|
|
@@ -27,8 +27,8 @@ export const CONFIGURABLE_PLUGINS = ["slack", "signal", "github", "email"];
|
|
|
27
27
|
* @param pluginManager - Optional plugin manager for runtime updates
|
|
28
28
|
* @param pluginsConfigPath - Path to the plugins.json configuration file
|
|
29
29
|
*/
|
|
30
|
-
export function createSelfConfigMcpServer(pluginManager, pluginsConfigPath) {
|
|
31
|
-
const updatePluginConfigTool =
|
|
30
|
+
export function createSelfConfigMcpServer(pluginManager, pluginsConfigPath, harness) {
|
|
31
|
+
const updatePluginConfigTool = defineTool("update_plugin_config", `Update your own plugin configuration. Use this when the user asks you to:
|
|
32
32
|
- Schedule check-ins or reminders (signal plugin)
|
|
33
33
|
- Change notification settings or frequency
|
|
34
34
|
- Enable/disable plugins
|
|
@@ -58,7 +58,7 @@ This allows you to autonomously manage your own behavior based on user requests.
|
|
|
58
58
|
isError: !result.success,
|
|
59
59
|
};
|
|
60
60
|
});
|
|
61
|
-
const getPluginConfigTool =
|
|
61
|
+
const getPluginConfigTool = defineTool("get_plugin_config", `Read your current plugin configuration. Use this to:
|
|
62
62
|
- Check what plugins are currently enabled
|
|
63
63
|
- See current notification settings before changing them
|
|
64
64
|
- Verify your current schedule or preferences`, {
|
|
@@ -75,10 +75,6 @@ This allows you to autonomously manage your own behavior based on user requests.
|
|
|
75
75
|
isError: !result.success,
|
|
76
76
|
};
|
|
77
77
|
});
|
|
78
|
-
return
|
|
79
|
-
name: "autonav-self-config",
|
|
80
|
-
version: "1.0.0",
|
|
81
|
-
tools: [updatePluginConfigTool, getPluginConfigTool],
|
|
82
|
-
});
|
|
78
|
+
return harness.createToolServer("autonav-self-config", [updatePluginConfigTool, getPluginConfigTool]).server;
|
|
83
79
|
}
|
|
84
80
|
//# sourceMappingURL=self-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-config.js","sourceRoot":"","sources":["../../src/tools/self-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"self-config.js","sourceRoot":"","sources":["../../src/tools/self-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AA8BpF;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,aAAwC,EACxC,iBAAyB,EACzB,OAAgB;IAEhB,MAAM,sBAAsB,GAAG,UAAU,CACvC,sBAAsB,EACtB;;;;;;;iFAO6E,EAC7E;QACE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAC3C,2DAA2D,CAC5D;QACD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CACrC;;;gEAGwD,CACzD;QACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACzB,kEAAkE,CACnE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC3C;YACE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,EACD,aAAa,EACb,iBAAiB,CAClB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC7B;aACF;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,mBAAmB,GAAG,UAAU,CACpC,mBAAmB,EACnB;;;8CAG0C,EAC1C;QACE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CACvD,gEAAgE,CACjE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EACvB,iBAAiB,CAClB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC7B;aACF;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/G,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autonav/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "CLI tools and Claude SDK Adapter for Autonav navigators",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
"@anthropic-ai/sdk": "^0.52.0",
|
|
50
50
|
"@autonav/communication-layer": "*",
|
|
51
51
|
"@octokit/rest": "^20.0.2",
|
|
52
|
+
"@opencode-ai/sdk": "^1.2.6",
|
|
52
53
|
"@slack/web-api": "^6.11.2",
|
|
53
54
|
"@types/micromatch": "^4.0.10",
|
|
54
55
|
"chalk": "^4.1.2",
|
|
@@ -57,6 +58,8 @@
|
|
|
57
58
|
"ignore": "^7.0.5",
|
|
58
59
|
"ink": "^5.1.0",
|
|
59
60
|
"ink-text-input": "^6.0.0",
|
|
61
|
+
"marked": "^15.0.12",
|
|
62
|
+
"marked-terminal": "^7.3.0",
|
|
60
63
|
"micromatch": "^4.0.8",
|
|
61
64
|
"ora": "^5.4.1",
|
|
62
65
|
"react": "^18.3.1",
|
package/dist/memento/state.d.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memento State Management
|
|
3
|
-
*
|
|
4
|
-
* File-based state persistence for the memento loop.
|
|
5
|
-
* Uses atomic writes to prevent corruption from crashes.
|
|
6
|
-
*/
|
|
7
|
-
import type { MementoState, MementoOptions } from "./types.js";
|
|
8
|
-
/**
|
|
9
|
-
* Get the path to the state file for a code directory
|
|
10
|
-
*/
|
|
11
|
-
export declare function getStatePath(codeDirectory: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Check if a memento state file exists
|
|
14
|
-
*/
|
|
15
|
-
export declare function stateExists(codeDirectory: string): boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Load existing state from disk
|
|
18
|
-
*
|
|
19
|
-
* @throws {Error} If state file doesn't exist or is invalid
|
|
20
|
-
*/
|
|
21
|
-
export declare function loadState(codeDirectory: string): MementoState;
|
|
22
|
-
/**
|
|
23
|
-
* Save state to disk atomically
|
|
24
|
-
*
|
|
25
|
-
* Uses temp file + rename pattern to prevent corruption
|
|
26
|
-
*/
|
|
27
|
-
export declare function saveState(state: MementoState): void;
|
|
28
|
-
/**
|
|
29
|
-
* Initialize a new memento state
|
|
30
|
-
*/
|
|
31
|
-
export declare function initializeState(codeDirectory: string, navDirectory: string, task: string, options: MementoOptions): MementoState;
|
|
32
|
-
/**
|
|
33
|
-
* Increment iteration counter and record timestamp
|
|
34
|
-
*/
|
|
35
|
-
export declare function incrementIteration(state: MementoState): MementoState;
|
|
36
|
-
/**
|
|
37
|
-
* Record a plan in history
|
|
38
|
-
*/
|
|
39
|
-
export declare function recordPlan(state: MementoState, summary: string): MementoState;
|
|
40
|
-
/**
|
|
41
|
-
* Mark the loop as completed
|
|
42
|
-
*/
|
|
43
|
-
export declare function completeLoop(state: MementoState, completionMessage?: string): MementoState;
|
|
44
|
-
/**
|
|
45
|
-
* Check if the loop should continue
|
|
46
|
-
*/
|
|
47
|
-
export declare function shouldContinue(state: MementoState): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Delete state file (cleanup after successful completion)
|
|
50
|
-
*/
|
|
51
|
-
export declare function deleteState(codeDirectory: string): void;
|
|
52
|
-
/**
|
|
53
|
-
* Get or initialize state based on options
|
|
54
|
-
*/
|
|
55
|
-
export declare function getOrInitializeState(codeDirectory: string, navDirectory: string, task: string, options: MementoOptions): MementoState;
|
|
56
|
-
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/memento/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM/D;;GAEG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY,CAmB7D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAgBnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACtB,YAAY,CAmBd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAKpE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAQ7E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,YAAY,CAK1F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAU3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACtB,YAAY,CAsBd"}
|
package/dist/memento/state.js
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memento State Management
|
|
3
|
-
*
|
|
4
|
-
* File-based state persistence for the memento loop.
|
|
5
|
-
* Uses atomic writes to prevent corruption from crashes.
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from "node:fs";
|
|
8
|
-
import * as path from "node:path";
|
|
9
|
-
import { randomUUID } from "node:crypto";
|
|
10
|
-
const STATE_DIR = ".autonav";
|
|
11
|
-
const STATE_FILE = "memento-state.json";
|
|
12
|
-
const STATE_VERSION = "1.0.0";
|
|
13
|
-
/**
|
|
14
|
-
* Get the path to the state file for a code directory
|
|
15
|
-
*/
|
|
16
|
-
export function getStatePath(codeDirectory) {
|
|
17
|
-
return path.join(codeDirectory, STATE_DIR, STATE_FILE);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Check if a memento state file exists
|
|
21
|
-
*/
|
|
22
|
-
export function stateExists(codeDirectory) {
|
|
23
|
-
return fs.existsSync(getStatePath(codeDirectory));
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Load existing state from disk
|
|
27
|
-
*
|
|
28
|
-
* @throws {Error} If state file doesn't exist or is invalid
|
|
29
|
-
*/
|
|
30
|
-
export function loadState(codeDirectory) {
|
|
31
|
-
const statePath = getStatePath(codeDirectory);
|
|
32
|
-
if (!fs.existsSync(statePath)) {
|
|
33
|
-
throw new Error(`No memento state found at ${statePath}. Use --resume=false to start a new run.`);
|
|
34
|
-
}
|
|
35
|
-
const content = fs.readFileSync(statePath, "utf-8");
|
|
36
|
-
const state = JSON.parse(content);
|
|
37
|
-
// Validate version
|
|
38
|
-
if (state.version !== STATE_VERSION) {
|
|
39
|
-
throw new Error(`State version mismatch: found ${state.version}, expected ${STATE_VERSION}. ` +
|
|
40
|
-
`Manual migration may be required.`);
|
|
41
|
-
}
|
|
42
|
-
return state;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Save state to disk atomically
|
|
46
|
-
*
|
|
47
|
-
* Uses temp file + rename pattern to prevent corruption
|
|
48
|
-
*/
|
|
49
|
-
export function saveState(state) {
|
|
50
|
-
const statePath = getStatePath(state.codeDirectory);
|
|
51
|
-
const stateDir = path.dirname(statePath);
|
|
52
|
-
const tempPath = path.join(stateDir, `.memento-state-${Date.now()}.tmp`);
|
|
53
|
-
// Ensure .autonav directory exists
|
|
54
|
-
if (!fs.existsSync(stateDir)) {
|
|
55
|
-
fs.mkdirSync(stateDir, { recursive: true });
|
|
56
|
-
}
|
|
57
|
-
// Update timestamp
|
|
58
|
-
state.lastUpdated = new Date().toISOString();
|
|
59
|
-
// Write to temp file, then rename atomically
|
|
60
|
-
fs.writeFileSync(tempPath, JSON.stringify(state, null, 2));
|
|
61
|
-
fs.renameSync(tempPath, statePath);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Initialize a new memento state
|
|
65
|
-
*/
|
|
66
|
-
export function initializeState(codeDirectory, navDirectory, task, options) {
|
|
67
|
-
const state = {
|
|
68
|
-
version: STATE_VERSION,
|
|
69
|
-
runId: randomUUID(),
|
|
70
|
-
codeDirectory: path.resolve(codeDirectory),
|
|
71
|
-
navDirectory: path.resolve(navDirectory),
|
|
72
|
-
task,
|
|
73
|
-
branch: options.branch,
|
|
74
|
-
iteration: 0,
|
|
75
|
-
maxIterations: options.maxIterations,
|
|
76
|
-
promise: options.promise,
|
|
77
|
-
completed: false,
|
|
78
|
-
lastUpdated: new Date().toISOString(),
|
|
79
|
-
iterationTimestamps: [],
|
|
80
|
-
planHistory: [],
|
|
81
|
-
};
|
|
82
|
-
saveState(state);
|
|
83
|
-
return state;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Increment iteration counter and record timestamp
|
|
87
|
-
*/
|
|
88
|
-
export function incrementIteration(state) {
|
|
89
|
-
state.iteration += 1;
|
|
90
|
-
state.iterationTimestamps.push(new Date().toISOString());
|
|
91
|
-
saveState(state);
|
|
92
|
-
return state;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Record a plan in history
|
|
96
|
-
*/
|
|
97
|
-
export function recordPlan(state, summary) {
|
|
98
|
-
state.planHistory.push({
|
|
99
|
-
iteration: state.iteration,
|
|
100
|
-
summary,
|
|
101
|
-
timestamp: new Date().toISOString(),
|
|
102
|
-
});
|
|
103
|
-
saveState(state);
|
|
104
|
-
return state;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Mark the loop as completed
|
|
108
|
-
*/
|
|
109
|
-
export function completeLoop(state, completionMessage) {
|
|
110
|
-
state.completed = true;
|
|
111
|
-
state.completionMessage = completionMessage;
|
|
112
|
-
saveState(state);
|
|
113
|
-
return state;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Check if the loop should continue
|
|
117
|
-
*/
|
|
118
|
-
export function shouldContinue(state) {
|
|
119
|
-
if (state.completed) {
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
if (state.maxIterations > 0 && state.iteration >= state.maxIterations) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Delete state file (cleanup after successful completion)
|
|
129
|
-
*/
|
|
130
|
-
export function deleteState(codeDirectory) {
|
|
131
|
-
const statePath = getStatePath(codeDirectory);
|
|
132
|
-
if (fs.existsSync(statePath)) {
|
|
133
|
-
fs.unlinkSync(statePath);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Get or initialize state based on options
|
|
138
|
-
*/
|
|
139
|
-
export function getOrInitializeState(codeDirectory, navDirectory, task, options) {
|
|
140
|
-
if (options.resume && stateExists(codeDirectory)) {
|
|
141
|
-
const state = loadState(codeDirectory);
|
|
142
|
-
// Validate that the resumed state matches current parameters
|
|
143
|
-
if (state.navDirectory !== path.resolve(navDirectory)) {
|
|
144
|
-
throw new Error(`Navigator directory mismatch: state has ${state.navDirectory}, ` +
|
|
145
|
-
`but ${navDirectory} was provided. Delete state file to start fresh.`);
|
|
146
|
-
}
|
|
147
|
-
return state;
|
|
148
|
-
}
|
|
149
|
-
// If state exists but not resuming, warn and overwrite
|
|
150
|
-
if (stateExists(codeDirectory) && !options.resume) {
|
|
151
|
-
console.warn(`Warning: Existing state found. Starting fresh (use --resume to continue).`);
|
|
152
|
-
deleteState(codeDirectory);
|
|
153
|
-
}
|
|
154
|
-
return initializeState(codeDirectory, navDirectory, task, options);
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/memento/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration v1.4.0: RFC-2119 Skills and Schema Alignment
|
|
3
|
-
*
|
|
4
|
-
* This migration updates navigators to use the refactored template system with:
|
|
5
|
-
* - RFC-2119 requirements in skills (MUST/MUST NOT/MAY) to prevent directory changes
|
|
6
|
-
* - New config.json schema (createdAt vs created, knowledgeBasePath vs knowledgeBase)
|
|
7
|
-
* - Updated CLAUDE.md sections (GROUNDING_RULES, RESPONSE_FORMAT, etc.)
|
|
8
|
-
*
|
|
9
|
-
* Changes:
|
|
10
|
-
* - Regenerates ask-<nav> skill with RFC-2119 requirements
|
|
11
|
-
* - Regenerates update-<nav> skill with RFC-2119 requirements
|
|
12
|
-
* - Migrates config.json to new schema format
|
|
13
|
-
* - Updates CLAUDE.md with new template sections (if missing)
|
|
14
|
-
* - Bumps version to 1.4.0
|
|
15
|
-
*/
|
|
16
|
-
import type { Migration } from "../types.js";
|
|
17
|
-
export declare const migration: Migration;
|
|
18
|
-
//# sourceMappingURL=v1.4.0-rfc2119-skills.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v1.4.0-rfc2119-skills.d.ts","sourceRoot":"","sources":["../../../src/migrations/versions/v1.4.0-rfc2119-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,SAAS,EAA8C,MAAM,aAAa,CAAC;AAmNzF,eAAO,MAAM,SAAS,EAAE,SAKvB,CAAC"}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration v1.4.0: RFC-2119 Skills and Schema Alignment
|
|
3
|
-
*
|
|
4
|
-
* This migration updates navigators to use the refactored template system with:
|
|
5
|
-
* - RFC-2119 requirements in skills (MUST/MUST NOT/MAY) to prevent directory changes
|
|
6
|
-
* - New config.json schema (createdAt vs created, knowledgeBasePath vs knowledgeBase)
|
|
7
|
-
* - Updated CLAUDE.md sections (GROUNDING_RULES, RESPONSE_FORMAT, etc.)
|
|
8
|
-
*
|
|
9
|
-
* Changes:
|
|
10
|
-
* - Regenerates ask-<nav> skill with RFC-2119 requirements
|
|
11
|
-
* - Regenerates update-<nav> skill with RFC-2119 requirements
|
|
12
|
-
* - Migrates config.json to new schema format
|
|
13
|
-
* - Updates CLAUDE.md with new template sections (if missing)
|
|
14
|
-
* - Bumps version to 1.4.0
|
|
15
|
-
*/
|
|
16
|
-
import * as fs from "node:fs";
|
|
17
|
-
import * as path from "node:path";
|
|
18
|
-
import { generateSkillContent, generateUpdateSkillContent, getSkillName, getUpdateSkillName, } from "@autonav/communication-layer";
|
|
19
|
-
const MIGRATION_VERSION = "1.4.0";
|
|
20
|
-
/**
|
|
21
|
-
* Check if skills have RFC-2119 requirements
|
|
22
|
-
*/
|
|
23
|
-
function hasRFC2119Requirements(skillContent) {
|
|
24
|
-
return (skillContent.includes("You MUST run") &&
|
|
25
|
-
skillContent.includes("You MUST NOT change directory") &&
|
|
26
|
-
skillContent.includes("RFC-2119 Requirements"));
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Check if config uses new schema
|
|
30
|
-
*/
|
|
31
|
-
function usesNewSchema(config) {
|
|
32
|
-
// New schema uses createdAt/updatedAt instead of created
|
|
33
|
-
// and knowledgeBasePath instead of knowledgeBase
|
|
34
|
-
return (config.createdAt !== undefined &&
|
|
35
|
-
config.knowledgeBasePath !== undefined);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Check if this migration is needed
|
|
39
|
-
*/
|
|
40
|
-
async function check(navPath) {
|
|
41
|
-
const configPath = path.join(navPath, "config.json");
|
|
42
|
-
if (!fs.existsSync(configPath)) {
|
|
43
|
-
return {
|
|
44
|
-
needed: false,
|
|
45
|
-
reason: "No config.json found",
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
// Parse config
|
|
49
|
-
let config;
|
|
50
|
-
try {
|
|
51
|
-
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
52
|
-
config = JSON.parse(configContent);
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
return {
|
|
56
|
-
needed: false,
|
|
57
|
-
reason: "Could not parse config.json",
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
// Check if already migrated
|
|
61
|
-
if (config.version === "1.4.0" || (config.version && config.version > "1.4.0")) {
|
|
62
|
-
return {
|
|
63
|
-
needed: false,
|
|
64
|
-
reason: `Navigator already at version ${config.version}`,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
// Check if skills need updating
|
|
68
|
-
const askSkillName = getSkillName(config.name);
|
|
69
|
-
const updateSkillName = getUpdateSkillName(config.name);
|
|
70
|
-
const askSkillPath = path.join(navPath, ".autonav", "skills", askSkillName, "SKILL.md");
|
|
71
|
-
const updateSkillPath = path.join(navPath, ".autonav", "skills", updateSkillName, "SKILL.md");
|
|
72
|
-
let needsSkillUpdate = false;
|
|
73
|
-
let needsSchemaUpdate = false;
|
|
74
|
-
// Check ask skill
|
|
75
|
-
if (fs.existsSync(askSkillPath)) {
|
|
76
|
-
const askSkillContent = fs.readFileSync(askSkillPath, "utf-8");
|
|
77
|
-
if (!hasRFC2119Requirements(askSkillContent)) {
|
|
78
|
-
needsSkillUpdate = true;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Check update skill
|
|
82
|
-
if (fs.existsSync(updateSkillPath)) {
|
|
83
|
-
const updateSkillContent = fs.readFileSync(updateSkillPath, "utf-8");
|
|
84
|
-
if (!hasRFC2119Requirements(updateSkillContent)) {
|
|
85
|
-
needsSkillUpdate = true;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// Check schema
|
|
89
|
-
if (!usesNewSchema(config)) {
|
|
90
|
-
needsSchemaUpdate = true;
|
|
91
|
-
}
|
|
92
|
-
if (!needsSkillUpdate && !needsSchemaUpdate) {
|
|
93
|
-
return {
|
|
94
|
-
needed: false,
|
|
95
|
-
reason: "Skills already have RFC-2119 requirements and config uses new schema",
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
const reasons = [];
|
|
99
|
-
if (needsSkillUpdate) {
|
|
100
|
-
reasons.push("Skills need RFC-2119 requirements");
|
|
101
|
-
}
|
|
102
|
-
if (needsSchemaUpdate) {
|
|
103
|
-
reasons.push("Config needs schema migration");
|
|
104
|
-
}
|
|
105
|
-
return {
|
|
106
|
-
needed: true,
|
|
107
|
-
reason: reasons.join(", "),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Apply the migration
|
|
112
|
-
*/
|
|
113
|
-
async function apply(navPath, _confirm) {
|
|
114
|
-
const configPath = path.join(navPath, "config.json");
|
|
115
|
-
const filesModified = [];
|
|
116
|
-
const changes = [];
|
|
117
|
-
// Load config
|
|
118
|
-
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
119
|
-
const config = JSON.parse(configContent);
|
|
120
|
-
// Build skill config from navigator config
|
|
121
|
-
const skillConfig = {
|
|
122
|
-
navigatorName: config.name,
|
|
123
|
-
navigatorPath: navPath,
|
|
124
|
-
description: config.description || "Knowledge navigator",
|
|
125
|
-
scope: config.scope,
|
|
126
|
-
audience: config.audience,
|
|
127
|
-
};
|
|
128
|
-
// Regenerate ask skill with RFC-2119
|
|
129
|
-
const askSkillName = getSkillName(config.name);
|
|
130
|
-
const askSkillPath = path.join(navPath, ".autonav", "skills", askSkillName, "SKILL.md");
|
|
131
|
-
if (fs.existsSync(askSkillPath)) {
|
|
132
|
-
const oldContent = fs.readFileSync(askSkillPath, "utf-8");
|
|
133
|
-
if (!hasRFC2119Requirements(oldContent)) {
|
|
134
|
-
const newContent = generateSkillContent(skillConfig);
|
|
135
|
-
fs.writeFileSync(askSkillPath, newContent);
|
|
136
|
-
filesModified.push(askSkillPath);
|
|
137
|
-
changes.push(`Regenerated ${askSkillName} skill with RFC-2119 requirements`);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// Regenerate update skill with RFC-2119
|
|
141
|
-
const updateSkillName = getUpdateSkillName(config.name);
|
|
142
|
-
const updateSkillPath = path.join(navPath, ".autonav", "skills", updateSkillName, "SKILL.md");
|
|
143
|
-
if (fs.existsSync(updateSkillPath)) {
|
|
144
|
-
const oldContent = fs.readFileSync(updateSkillPath, "utf-8");
|
|
145
|
-
if (!hasRFC2119Requirements(oldContent)) {
|
|
146
|
-
const newContent = generateUpdateSkillContent(skillConfig);
|
|
147
|
-
fs.writeFileSync(updateSkillPath, newContent);
|
|
148
|
-
filesModified.push(updateSkillPath);
|
|
149
|
-
changes.push(`Regenerated ${updateSkillName} skill with RFC-2119 requirements`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
// Migrate config schema
|
|
153
|
-
if (!usesNewSchema(config)) {
|
|
154
|
-
const migratedConfig = {
|
|
155
|
-
version: "1.4.0",
|
|
156
|
-
name: config.name,
|
|
157
|
-
description: config.description,
|
|
158
|
-
createdAt: config.created || new Date().toISOString(),
|
|
159
|
-
updatedAt: new Date().toISOString(),
|
|
160
|
-
knowledgeBasePath: config.knowledgeBase || "./knowledge",
|
|
161
|
-
plugins: config.plugins || {
|
|
162
|
-
configFile: ".claude/plugins.json",
|
|
163
|
-
},
|
|
164
|
-
};
|
|
165
|
-
// Preserve optional fields
|
|
166
|
-
if (config.scope)
|
|
167
|
-
migratedConfig.scope = config.scope;
|
|
168
|
-
if (config.audience)
|
|
169
|
-
migratedConfig.audience = config.audience;
|
|
170
|
-
if (config.systemConfiguration)
|
|
171
|
-
migratedConfig.systemConfiguration = config.systemConfiguration;
|
|
172
|
-
if (config.knowledgePack) {
|
|
173
|
-
migratedConfig.knowledgePack = {
|
|
174
|
-
name: config.knowledgePack.name || config.knowledgePack,
|
|
175
|
-
version: config.knowledgePack.version || "unknown",
|
|
176
|
-
installedAt: config.knowledgePack.installedAt || config.created || new Date().toISOString(),
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
migratedConfig.knowledgePack = null;
|
|
181
|
-
}
|
|
182
|
-
fs.writeFileSync(configPath, JSON.stringify(migratedConfig, null, 2));
|
|
183
|
-
filesModified.push(configPath);
|
|
184
|
-
changes.push("Migrated config.json to new schema (createdAt, knowledgeBasePath)");
|
|
185
|
-
changes.push("Bumped version to 1.4.0");
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
// Just bump version
|
|
189
|
-
config.version = "1.4.0";
|
|
190
|
-
config.updatedAt = new Date().toISOString();
|
|
191
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
192
|
-
filesModified.push(configPath);
|
|
193
|
-
changes.push("Bumped version to 1.4.0");
|
|
194
|
-
}
|
|
195
|
-
return {
|
|
196
|
-
success: true,
|
|
197
|
-
message: changes.join("; "),
|
|
198
|
-
filesModified,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
export const migration = {
|
|
202
|
-
version: MIGRATION_VERSION,
|
|
203
|
-
description: "Add RFC-2119 requirements to skills and migrate config schema",
|
|
204
|
-
check,
|
|
205
|
-
apply,
|
|
206
|
-
};
|
|
207
|
-
//# sourceMappingURL=v1.4.0-rfc2119-skills.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v1.4.0-rfc2119-skills.js","sourceRoot":"","sources":["../../../src/migrations/versions/v1.4.0-rfc2119-skills.ts"],"names":[],"mappings":"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"}
|