@kisev/agentomatic 11.0.0-dev.62.g445d44a8adf0 → 11.0.0-dev.64.g69d6e77c9089

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 CHANGED
@@ -15,8 +15,8 @@ update, and removal lifecycle.
15
15
  - A confirmed `config` command that connects the package and recommended
16
16
  fragments into `opencode.json(c)`, `tui.json`, `kilo.json(c)`, and
17
17
  `mimocode.json(c)` while preserving existing entries and comments.
18
- - Optional plugin wrappers: `rules-injector`, `zed-bell`, and `memomatic`
19
- personal learning memory; the `rtk` compression wrapper is deployed by
18
+ - Optional plugin wrappers: `rules-injector` and `zed-bell`;
19
+ the `rtk` compression wrapper is deployed by
20
20
  default and observable through `/rtk-stats` and `doctor`.
21
21
 
22
22
  The package does not contain, install, update, inspect, or remove portable skills.
@@ -35,17 +35,17 @@ outdated facts by key, and archives every pre-image.
35
35
  `$XDG_STATE_HOME/memomatic/inbox/` where skills and agents queue asynchronous
36
36
  Markdown drops.
37
37
  - Config: `$XDG_CONFIG_HOME/memomatic/settings.json` (embedding endpoint, dream
38
- model and variant, thresholds, `projects` cwd-to-project map for recall) and
38
+ model and variant, thresholds) and
39
39
  `MEMORY_RULES.md` with manual directives: `- never-save: <topic>` and opt-in
40
40
  `- auto-clean: older-than=90d scope=episodic [source=name]`.
41
41
  - Tools: `memory_search`, `memory_get`, `memory_write`, `memory_forget`, exposed
42
- by the plugin, by the MCP stdio server (`memomatic mcp-serve`),
43
- and by the CLI (`process`, `search`, `status`, `index`, `dream --dry-run`).
42
+ by the independently installed MCP stdio server (`memomatic mcp-serve`).
43
+ The CLI provides `process`, `search`, `status`, `index`, and `dream --dry-run`.
44
44
  `memory_write` queues an inbox drop and answers with a flush hint; entries
45
45
  carry a `source` annotation whose derived visibility (`team-*`, `gitlab`,
46
46
  `spec-manage` are quotable in team artifacts, the rest personal-only) is
47
- exposed in search results and the session bootstrap, which also injects
48
- project- and trigger-matched recall blocks from the session database.
47
+ exposed in search results. The model initiates retrieval through tool calls;
48
+ there is no automatic memory injection or memomatic plugin.
49
49
  - Scheduling: copy `memomatic-dream.service` and `memomatic-dream.timer` from the
50
50
  `@kisev/memomatic` package `assets/systemd/` into `~/.config/systemd/user/` and run
51
51
  `systemctl --user enable --now memomatic-dream.timer`; run the sweep another
@@ -53,6 +53,9 @@ outdated facts by key, and archives every pre-image.
53
53
  - Forgetting is explicit or rule-gated: nothing is deleted without
54
54
  `memory_forget` or an `auto-clean` directive; pinned entries never decay.
55
55
 
56
+ Agentomatic does not depend on memomatic. See the [MCP setup and legacy plugin
57
+ migration guide](../../docs/how-to/memomatic.md).
58
+
56
59
  ## Requirements
57
60
 
58
61
  - Node.js 22 or later.
package/README.ru.md CHANGED
@@ -16,8 +16,8 @@
16
16
  - Команда `config` с подтверждением: подключает пакет и рекомендованные
17
17
  фрагменты в `opencode.json(c)`, `tui.json`, `kilo.json(c)` и
18
18
  `mimocode.json(c)`, сохраняя существующие записи и комментарии.
19
- - Необязательные обертки плагинов `rules-injector`, `zed-bell` и персональная
20
- обучающая память `memomatic`; обертка сжатия `rtk` развертывается по умолчанию
19
+ - Необязательные обертки плагинов `rules-injector` и `zed-bell`;
20
+ обертка сжатия `rtk` развертывается по умолчанию
21
21
  и наблюдаема через `/rtk-stats` и `doctor`.
22
22
 
23
23
  Пакет не содержит, не устанавливает, не обновляет, не проверяет и не удаляет
@@ -37,18 +37,17 @@ Memomatic - персональная обучающая память по мот
37
37
  `$XDG_STATE_HOME/memomatic/inbox/`, куда скиллы и агенты кладут асинхронные
38
38
  Markdown-дропы.
39
39
  - Настройки: `$XDG_CONFIG_HOME/memomatic/settings.json` (эндпоинт эмбеддера,
40
- модель и вариант мышления для сновидений, пороги, маппинг `projects`
41
- каталог→проект для напоминаний) и `MEMORY_RULES.md` с ручными директивами:
40
+ модель и вариант мышления для сновидений, пороги) и `MEMORY_RULES.md` с ручными директивами:
42
41
  `- never-save: <тема>` и опциональная
43
42
  `- auto-clean: older-than=90d scope=episodic [source=name]`.
44
43
  - Инструменты: `memory_search`, `memory_get`, `memory_write`, `memory_forget` -
45
- через плагин, MCP-сервер stdio (`memomatic mcp-serve`) и CLI
46
- (`process`, `search`, `status`, `index`, `dream --dry-run`).
44
+ через отдельно установленный MCP-сервер stdio (`memomatic mcp-serve`).
45
+ CLI предоставляет `process`, `search`, `status`, `index` и `dream --dry-run`.
47
46
  `memory_write` кладёт дроп в inbox и отвечает подсказкой flush; записи несут
48
47
  аннотацию `source`, из которой выводится видимость (`team-*`, `gitlab` и
49
48
  `spec-manage` цитируемы в командных артефактах, остальные personal-only);
50
- метка видна в поиске и в bootstrap сессии, куда также попадают блоки
51
- напоминаний по проекту и trigger-фразам из базы сессий.
49
+ метка видна в поиске. Модель сама запрашивает память через инструменты;
50
+ автоматической подстановки и плагина memomatic нет.
52
51
  - Расписание: скопируйте `memomatic-dream.service` и `memomatic-dream.timer` из
53
52
  `assets/systemd/` пакета `@kisev/memomatic` в `~/.config/systemd/user/` и выполните
54
53
  `systemctl --user enable --now memomatic-dream.timer`; альтернативный запуск -
@@ -56,6 +55,9 @@ Memomatic - персональная обучающая память по мот
56
55
  - Забывание явно или по правилу: ничего не удаляется без `memory_forget` или
57
56
  директивы `auto-clean`; закрепленные записи не затухают.
58
57
 
58
+ Agentomatic не зависит от memomatic. См. [настройку MCP и переход со старого
59
+ плагина](../../docs/ru/how-to/memomatic.md).
60
+
59
61
  ## Требования
60
62
 
61
63
  - Node.js 22 или новее.
package/dist/catalog.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export declare const CATALOG: {
2
2
  readonly skills: readonly ["agents-md", "askme", "ast-grep", "code-explain", "code-review", "commit-msg", "docs-prepare", "docs-review", "goal", "humanize", "mattermost", "mattermost-triage", "mr-prepare", "release-prepare", "release-review", "rtk", "skill-improve", "slides-prompts-prepare", "spec-manage", "stopit", "briefing", "task-prepare", "task-review", "task-triage", "taskmatic", "team-1on1", "team-agreements", "team-feedback", "team-health", "team-incident", "team-onboarding", "team-people", "team-performance", "team-report", "team-retro", "team-roadmap", "team-sprint-close", "team-sprint-start"];
3
- readonly plugins: readonly ["rules-injector", "rtk", "zed-bell", "memomatic"];
3
+ readonly plugins: readonly ["rules-injector", "rtk", "zed-bell"];
4
4
  readonly agents: readonly ["manager", "architect", "mapper", "worker", "review", "critic"];
5
5
  readonly package_commands: readonly ["rtk-stats"];
6
6
  readonly tools: readonly ["route"];
package/dist/catalog.js CHANGED
@@ -40,7 +40,7 @@ export const CATALOG = {
40
40
  "team-sprint-close",
41
41
  "team-sprint-start",
42
42
  ],
43
- plugins: ["rules-injector", "rtk", "zed-bell", "memomatic"],
43
+ plugins: ["rules-injector", "rtk", "zed-bell"],
44
44
  agents: ["manager", "architect", "mapper", "worker", "review", "critic"],
45
45
  package_commands: ["rtk-stats"],
46
46
  tools: ["route"],
package/dist/index.d.ts CHANGED
@@ -2,13 +2,11 @@ import { type PluginInput } from "@opencode-ai/plugin";
2
2
  import rulesInjector, { type RulesInjectorOptions } from "./plugins/rules-injector.js";
3
3
  import rtk, { type RtkOptions } from "./plugins/rtk.js";
4
4
  import zedBell, { type ZedBellOptions } from "./plugins/zed-bell.js";
5
- import memomatic, { type MemomaticOptions } from "./plugins/memomatic.js";
6
- export { rulesInjector, rtk, zedBell, memomatic };
5
+ export { rulesInjector, rtk, zedBell };
7
6
  export type OpenCodeOptions = {
8
7
  rulesInjector?: RulesInjectorOptions;
9
8
  rtk?: RtkOptions;
10
9
  zedBell?: ZedBellOptions;
11
- memomatic?: MemomaticOptions;
12
10
  };
13
11
  declare const plugin: (input: PluginInput) => Promise<{
14
12
  tool: {
package/dist/index.js CHANGED
@@ -3,9 +3,8 @@ import { CATEGORIES, RoutingGate, } from "./routing.js";
3
3
  import rulesInjector from "./plugins/rules-injector.js";
4
4
  import rtk from "./plugins/rtk.js";
5
5
  import zedBell from "./plugins/zed-bell.js";
6
- import memomatic from "./plugins/memomatic.js";
7
6
  import { digest } from "./lifecycle.js";
8
- export { rulesInjector, rtk, zedBell, memomatic };
7
+ export { rulesInjector, rtk, zedBell };
9
8
  const plugin = (async (input) => {
10
9
  const gate = new RoutingGate();
11
10
  const hostInventory = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kisev/agentomatic",
3
- "version": "11.0.0-dev.62.g445d44a8adf0",
3
+ "version": "11.0.0-dev.64.g69d6e77c9089",
4
4
  "description": "OpenCode integration and opt-in installer for portable Agent Skills.",
5
5
  "homepage": "https://github.com/kisev/skills#readme",
6
6
  "bugs": {
@@ -29,10 +29,6 @@
29
29
  "types": "./dist/plugins/rules-injector.d.ts",
30
30
  "import": "./dist/plugins/rules-injector.js"
31
31
  },
32
- "./plugins/memomatic": {
33
- "types": "./dist/plugins/memomatic.d.ts",
34
- "import": "./dist/plugins/memomatic.js"
35
- },
36
32
  "./plugins/rtk": {
37
33
  "types": "./dist/plugins/rtk.d.ts",
38
34
  "import": "./dist/plugins/rtk.js"
@@ -44,14 +40,13 @@
44
40
  },
45
41
  "scripts": {
46
42
  "build": "node scripts/clean-dist.mjs && tsc --project tsconfig.json && node dist/generate-assets.js",
47
- "test": "node --test test/agent-profiles.test.mjs test/config-setup.test.mjs test/legacy-migration.test.mjs test/doctor.test.mjs test/memomatic-plugin.test.mjs test/package.test.mjs test/rtk.test.mjs test/self-install.test.mjs test/stage19.test.mjs test/surface-coverage.test.mjs",
43
+ "test": "node --test test/agent-profiles.test.mjs test/config-setup.test.mjs test/legacy-migration.test.mjs test/doctor.test.mjs test/package.test.mjs test/rtk.test.mjs test/self-install.test.mjs test/stage19.test.mjs test/surface-coverage.test.mjs",
48
44
  "smoke": "node test/smoke.mjs",
49
45
  "pack:check": "node test/pack-allowlist.mjs"
50
46
  },
51
47
  "dependencies": {
52
48
  "@clack/prompts": "^1.8.1",
53
- "@kisev/memomatic": "1.0.0-dev.62.g445d44a8adf0",
54
- "@kisev/safe-fs": "1.0.0-dev.62.g445d44a8adf0"
49
+ "@kisev/safe-fs": "1.0.0-dev.64.g69d6e77c9089"
55
50
  },
56
51
  "devDependencies": {
57
52
  "@opencode-ai/plugin": "1.18.29",
@@ -1,3 +0,0 @@
1
- import plugin from "@kisev/agentomatic/plugins/memomatic";
2
-
3
- export default (input) => plugin(input);
@@ -1,81 +0,0 @@
1
- export type MemomaticOptions = {
2
- enabled?: boolean;
3
- bootstrapBudgetChars?: number;
4
- bootstrapEpisodicBudgetChars?: number;
5
- };
6
- export declare function memomatic(options?: MemomaticOptions): Promise<{
7
- "experimental.chat.system.transform"?: undefined;
8
- tool?: undefined;
9
- } | {
10
- "experimental.chat.system.transform": (input: {
11
- sessionID?: string;
12
- }, output: {
13
- system: string[];
14
- }) => Promise<void>;
15
- tool: {
16
- memory_forget: {
17
- description: string;
18
- args: {
19
- file: import("zod").ZodString;
20
- line: import("zod").ZodNumber;
21
- };
22
- execute(args: {
23
- file: string;
24
- line: number;
25
- }, context: import("@opencode-ai/plugin").ToolContext): Promise<import("@opencode-ai/plugin").ToolResult>;
26
- };
27
- memory_get: {
28
- description: string;
29
- args: {
30
- file: import("zod").ZodString;
31
- line: import("zod").ZodOptional<import("zod").ZodNumber>;
32
- };
33
- execute(args: {
34
- file: string;
35
- line?: number | undefined;
36
- }, context: import("@opencode-ai/plugin").ToolContext): Promise<import("@opencode-ai/plugin").ToolResult>;
37
- };
38
- memory_search: {
39
- description: string;
40
- args: {
41
- query: import("zod").ZodString;
42
- };
43
- execute(args: {
44
- query: string;
45
- }, context: import("@opencode-ai/plugin").ToolContext): Promise<import("@opencode-ai/plugin").ToolResult>;
46
- };
47
- memory_write: {
48
- description: string;
49
- args: {
50
- text: import("zod").ZodString;
51
- target: import("zod").ZodOptional<import("zod").ZodEnum<{
52
- curated: "curated";
53
- episodic: "episodic";
54
- user: "user";
55
- }>>;
56
- origin: import("zod").ZodOptional<import("zod").ZodEnum<{
57
- agent: "agent";
58
- user: "user";
59
- }>>;
60
- key: import("zod").ZodOptional<import("zod").ZodString>;
61
- project: import("zod").ZodOptional<import("zod").ZodString>;
62
- source: import("zod").ZodOptional<import("zod").ZodString>;
63
- importance: import("zod").ZodOptional<import("zod").ZodNumber>;
64
- trigger: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
65
- pinned: import("zod").ZodOptional<import("zod").ZodBoolean>;
66
- };
67
- execute(args: {
68
- text: string;
69
- target?: "curated" | "episodic" | "user" | undefined;
70
- origin?: "agent" | "user" | undefined;
71
- key?: string | undefined;
72
- project?: string | undefined;
73
- source?: string | undefined;
74
- importance?: number | undefined;
75
- trigger?: string[] | undefined;
76
- pinned?: boolean | undefined;
77
- }, context: import("@opencode-ai/plugin").ToolContext): Promise<import("@opencode-ai/plugin").ToolResult>;
78
- };
79
- };
80
- }>;
81
- export default memomatic;
@@ -1,99 +0,0 @@
1
- import { tool } from "@opencode-ai/plugin";
2
- import { bootstrapContext, forgetEntry, getEntry, opencodeDatabasePath, openMemomatic, searchMemoryResults, sessionFacts, writeEntry, } from "@kisev/memomatic";
3
- async function withContext(work) {
4
- const context = await openMemomatic();
5
- try {
6
- return JSON.stringify(await work(context));
7
- }
8
- finally {
9
- context.store.close();
10
- }
11
- }
12
- export async function memomatic(options = {}) {
13
- if (options.enabled === false)
14
- return {};
15
- const curatedBudget = options.bootstrapBudgetChars ?? 4_000;
16
- const episodicBudget = options.bootstrapEpisodicBudgetChars ?? 1_500;
17
- const memorySearch = tool({
18
- args: { query: tool.schema.string() },
19
- description: "Search personal long-term memory for durable decisions, discoveries, failed attempts, and session outcomes.",
20
- async execute(args) {
21
- return withContext((context) => searchMemoryResults(context, args.query));
22
- },
23
- });
24
- const memoryGet = tool({
25
- args: {
26
- file: tool.schema.string(),
27
- line: tool.schema.number().optional(),
28
- },
29
- description: "Read a memomatic memory file fully or one line. Fetching a line marks that entry as useful.",
30
- async execute(args) {
31
- return withContext((context) => getEntry(context, args.file, args.line));
32
- },
33
- });
34
- const memoryWrite = tool({
35
- args: {
36
- text: tool.schema.string(),
37
- target: tool.schema.enum(["episodic", "curated", "user"]).optional(),
38
- origin: tool.schema.enum(["user", "agent"]).optional(),
39
- key: tool.schema.string().optional(),
40
- project: tool.schema.string().optional(),
41
- source: tool.schema.string().optional(),
42
- importance: tool.schema.number().min(1).max(10).optional(),
43
- trigger: tool.schema.array(tool.schema.string()).optional(),
44
- pinned: tool.schema.boolean().optional(),
45
- },
46
- description: "Queue a durable memory entry for the next process/dream pass: standing decisions with rationale, discoveries, failed attempts with rejection reasons, session outcomes, action-sensitive boundaries. Pass source=<skill-name> when a skill workflow requests the save. Respect MEMORY_RULES.md; never-save topics are rejected.",
47
- async execute(args) {
48
- return withContext((context) => writeEntry(context, {
49
- importance: args.importance,
50
- key: args.key,
51
- origin: args.origin,
52
- pinned: args.pinned,
53
- project: args.project,
54
- source: args.source,
55
- target: args.target,
56
- text: args.text,
57
- trigger: args.trigger,
58
- }));
59
- },
60
- });
61
- const memoryForget = tool({
62
- args: { file: tool.schema.string(), line: tool.schema.number() },
63
- description: "Remove one entry line from a memomatic memory file (explicit deletion only).",
64
- async execute(args) {
65
- return withContext((context) => forgetEntry(context, args));
66
- },
67
- });
68
- return {
69
- "experimental.chat.system.transform": async (input, output) => {
70
- try {
71
- const context = await openMemomatic();
72
- try {
73
- const facts = input.sessionID
74
- ? sessionFacts(opencodeDatabasePath(), input.sessionID)
75
- : { directory: null, title: null, firstMessage: null };
76
- const block = await bootstrapContext(context, facts, {
77
- curatedBudgetChars: curatedBudget,
78
- episodicBudgetChars: episodicBudget,
79
- });
80
- if (block)
81
- output.system.push(block);
82
- }
83
- finally {
84
- context.store.close();
85
- }
86
- }
87
- catch {
88
- // Memory bootstrap must never break the session.
89
- }
90
- },
91
- tool: {
92
- memory_forget: memoryForget,
93
- memory_get: memoryGet,
94
- memory_search: memorySearch,
95
- memory_write: memoryWrite,
96
- },
97
- };
98
- }
99
- export default memomatic;