@kisev/agentomatic 11.0.0-dev.61.gdf462654550b → 11.0.0-dev.63.g16bac7f2191d
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 +10 -7
- package/README.ru.md +10 -8
- package/dist/catalog.d.ts +1 -1
- package/dist/catalog.js +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.js +1 -2
- package/package.json +3 -8
- package/dist/assets/plugins/memomatic.js +0 -3
- package/dist/plugins/memomatic.d.ts +0 -81
- package/dist/plugins/memomatic.js +0 -99
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
|
|
19
|
-
|
|
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
|
|
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
|
|
43
|
-
|
|
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
|
|
48
|
-
|
|
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
|
|
20
|
-
|
|
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
|
-
модель и вариант мышления для сновидений,
|
|
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
|
-
через
|
|
46
|
-
|
|
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
|
-
метка видна в
|
|
51
|
-
|
|
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"
|
|
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"
|
|
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
|
-
|
|
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
|
|
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.
|
|
3
|
+
"version": "11.0.0-dev.63.g16bac7f2191d",
|
|
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/
|
|
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/
|
|
54
|
-
"@kisev/safe-fs": "1.0.0-dev.61.gdf462654550b"
|
|
49
|
+
"@kisev/safe-fs": "1.0.0-dev.63.g16bac7f2191d"
|
|
55
50
|
},
|
|
56
51
|
"devDependencies": {
|
|
57
52
|
"@opencode-ai/plugin": "1.18.29",
|
|
@@ -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;
|