@ksm0709/context 0.0.21 → 0.0.22
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/dist/cli/index.js +4 -3
- package/dist/index.js +34 -17
- package/dist/omx/index.mjs +15 -5
- package/package.json +2 -2
package/dist/cli/index.js
CHANGED
|
@@ -50,7 +50,7 @@ function resolveContextDir(projectDir) {
|
|
|
50
50
|
// package.json
|
|
51
51
|
var package_default = {
|
|
52
52
|
name: "@ksm0709/context",
|
|
53
|
-
version: "0.0.
|
|
53
|
+
version: "0.0.22",
|
|
54
54
|
author: {
|
|
55
55
|
name: "TaehoKang",
|
|
56
56
|
email: "ksm07091@gmail.com"
|
|
@@ -92,7 +92,7 @@ var package_default = {
|
|
|
92
92
|
"@opencode-ai/plugin": ">=1.0.0"
|
|
93
93
|
},
|
|
94
94
|
dependencies: {
|
|
95
|
-
"@ksm0709/context": "^0.0.
|
|
95
|
+
"@ksm0709/context": "^0.0.21",
|
|
96
96
|
"jsonc-parser": "^3.0.0"
|
|
97
97
|
},
|
|
98
98
|
devDependencies: {
|
|
@@ -122,7 +122,7 @@ var DEFAULT_CONFIG = `{
|
|
|
122
122
|
"turnEnd": "prompts/turn-end.md"
|
|
123
123
|
},
|
|
124
124
|
"knowledge": {
|
|
125
|
-
"dir": "
|
|
125
|
+
"dir": ".context/memory",
|
|
126
126
|
"sources": ["AGENTS.md"]
|
|
127
127
|
},
|
|
128
128
|
"omx": {
|
|
@@ -166,6 +166,7 @@ var DEFAULT_TURN_START = `## Knowledge Context
|
|
|
166
166
|
- \uC9C0\uC2DD \uB178\uD2B8\uC5D0 \uC5C6\uB294 \uC0C8\uB85C\uC6B4 \uACB0\uC815\uC774\uB098 \uBC18\uBCF5 \uAC00\uCE58\uAC00 \uC788\uB294 \uBC1C\uACAC\uC740 \uC791\uC5C5 \uBA54\uBAA8\uB098 \uC9C0\uC2DD \uB178\uD2B8 \uD6C4\uBCF4\uB85C \uAE30\uB85D\uD558\uC138\uC694
|
|
167
167
|
`;
|
|
168
168
|
var DEFAULT_TURN_END = `## TURN END \uC791\uC5C5 \uC9C0\uCE68
|
|
169
|
+
\uC774 \uC9C0\uCE68\uC740 \uC5D0\uC774\uC804\uD2B8\uB97C \uC704\uD55C \uAC83\uC774\uBA70, \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC9C1\uC811\uC801\uC73C\uB85C \uB178\uCD9C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
|
|
169
170
|
\uC544\uB798 \uBA54\uB274 \uC911 \uD558\uB098\uB97C \uC120\uD0DD\uD574 \uC9C4\uD589 \uC0C1\uD669\uC5D0 \uB9DE\uAC8C \uC218\uD589\uD558\uC138\uC694.
|
|
170
171
|
**\uBC18\uB4DC\uC2DC \uB9C1\uD06C\uB41C \uAC00\uC774\uB4DC\uB97C \uCC38\uACE0\uD558\uC5EC \uC815\uD655\uD788 \uC218\uD589\uD574\uC57C \uD569\uB2C8\uB2E4.**
|
|
171
172
|
|
package/dist/index.js
CHANGED
|
@@ -1129,7 +1129,7 @@ import { join as join4 } from "path";
|
|
|
1129
1129
|
// package.json
|
|
1130
1130
|
var package_default = {
|
|
1131
1131
|
name: "@ksm0709/context",
|
|
1132
|
-
version: "0.0.
|
|
1132
|
+
version: "0.0.22",
|
|
1133
1133
|
author: {
|
|
1134
1134
|
name: "TaehoKang",
|
|
1135
1135
|
email: "ksm07091@gmail.com"
|
|
@@ -1171,7 +1171,7 @@ var package_default = {
|
|
|
1171
1171
|
"@opencode-ai/plugin": ">=1.0.0"
|
|
1172
1172
|
},
|
|
1173
1173
|
dependencies: {
|
|
1174
|
-
"@ksm0709/context": "^0.0.
|
|
1174
|
+
"@ksm0709/context": "^0.0.21",
|
|
1175
1175
|
"jsonc-parser": "^3.0.0"
|
|
1176
1176
|
},
|
|
1177
1177
|
devDependencies: {
|
|
@@ -1201,7 +1201,7 @@ var DEFAULT_CONFIG = `{
|
|
|
1201
1201
|
"turnEnd": "prompts/turn-end.md"
|
|
1202
1202
|
},
|
|
1203
1203
|
"knowledge": {
|
|
1204
|
-
"dir": "
|
|
1204
|
+
"dir": ".context/memory",
|
|
1205
1205
|
"sources": ["AGENTS.md"]
|
|
1206
1206
|
},
|
|
1207
1207
|
"omx": {
|
|
@@ -1245,6 +1245,7 @@ var DEFAULT_TURN_START = `## Knowledge Context
|
|
|
1245
1245
|
- \uC9C0\uC2DD \uB178\uD2B8\uC5D0 \uC5C6\uB294 \uC0C8\uB85C\uC6B4 \uACB0\uC815\uC774\uB098 \uBC18\uBCF5 \uAC00\uCE58\uAC00 \uC788\uB294 \uBC1C\uACAC\uC740 \uC791\uC5C5 \uBA54\uBAA8\uB098 \uC9C0\uC2DD \uB178\uD2B8 \uD6C4\uBCF4\uB85C \uAE30\uB85D\uD558\uC138\uC694
|
|
1246
1246
|
`;
|
|
1247
1247
|
var DEFAULT_TURN_END = `## TURN END \uC791\uC5C5 \uC9C0\uCE68
|
|
1248
|
+
\uC774 \uC9C0\uCE68\uC740 \uC5D0\uC774\uC804\uD2B8\uB97C \uC704\uD55C \uAC83\uC774\uBA70, \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC9C1\uC811\uC801\uC73C\uB85C \uB178\uCD9C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
|
|
1248
1249
|
\uC544\uB798 \uBA54\uB274 \uC911 \uD558\uB098\uB97C \uC120\uD0DD\uD574 \uC9C4\uD589 \uC0C1\uD669\uC5D0 \uB9DE\uAC8C \uC218\uD589\uD558\uC138\uC694.
|
|
1249
1250
|
**\uBC18\uB4DC\uC2DC \uB9C1\uD06C\uB41C \uAC00\uC774\uB4DC\uB97C \uCC38\uACE0\uD558\uC5EC \uC815\uD655\uD788 \uC218\uD589\uD574\uC57C \uD569\uB2C8\uB2E4.**
|
|
1250
1251
|
|
|
@@ -1650,31 +1651,47 @@ var plugin = async ({ directory, client }) => {
|
|
|
1650
1651
|
const config = loadConfig(directory);
|
|
1651
1652
|
return {
|
|
1652
1653
|
"experimental.chat.messages.transform": async (_input, output) => {
|
|
1654
|
+
if (process.env.OMX_HOOK_PLUGINS)
|
|
1655
|
+
return;
|
|
1656
|
+
let skipTurnStart = false;
|
|
1657
|
+
const agentsMdPath = join5(directory, "AGENTS.md");
|
|
1658
|
+
if (existsSync4(agentsMdPath)) {
|
|
1659
|
+
const content = readFileSync5(agentsMdPath, "utf-8");
|
|
1660
|
+
if (content.includes("<!-- context:start -->") && content.includes("<!-- context:end -->")) {
|
|
1661
|
+
skipTurnStart = true;
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1653
1664
|
if (output.messages.length === 0)
|
|
1654
1665
|
return;
|
|
1655
1666
|
const lastUserMsg = output.messages.filter((m) => m.info.role === "user").at(-1);
|
|
1656
1667
|
if (!lastUserMsg)
|
|
1657
1668
|
return;
|
|
1669
|
+
const isTurnEndMessage = lastUserMsg.parts.some((p) => p.type === "text" && p.text.includes("<system-reminder>") && p.text.includes("TURN END"));
|
|
1670
|
+
if (isTurnEndMessage) {
|
|
1671
|
+
return;
|
|
1672
|
+
}
|
|
1658
1673
|
const promptVars = {
|
|
1659
1674
|
knowledgeDir: config.knowledge.dir ?? "docs",
|
|
1660
1675
|
sessionId: lastUserMsg.info.sessionID
|
|
1661
1676
|
};
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1677
|
+
if (!skipTurnStart) {
|
|
1678
|
+
const turnStartPath = resolvePromptPath(directory, contextDir, config.prompts.turnStart ?? join5(DEFAULTS.promptDir, DEFAULTS.turnStartFile));
|
|
1679
|
+
const turnStartRaw = readPromptFile(turnStartPath) ?? "";
|
|
1680
|
+
const turnStart = resolvePromptVariables(turnStartRaw, promptVars);
|
|
1681
|
+
const knowledgeIndex = buildKnowledgeIndexV2(directory, config.knowledge);
|
|
1682
|
+
const indexContent = knowledgeIndex.mode === "flat" ? formatKnowledgeIndex(knowledgeIndex.individualFiles) : formatDomainIndex(knowledgeIndex);
|
|
1683
|
+
const combinedContent = [turnStart, indexContent].filter(Boolean).join(`
|
|
1668
1684
|
|
|
1669
1685
|
`);
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1686
|
+
if (combinedContent) {
|
|
1687
|
+
lastUserMsg.parts.push({
|
|
1688
|
+
id: `context-turn-start-${Date.now()}`,
|
|
1689
|
+
sessionID: lastUserMsg.info.sessionID,
|
|
1690
|
+
messageID: lastUserMsg.info.id,
|
|
1691
|
+
type: "text",
|
|
1692
|
+
text: combinedContent
|
|
1693
|
+
});
|
|
1694
|
+
}
|
|
1678
1695
|
}
|
|
1679
1696
|
const signalPath = join5(directory, DEFAULTS.workCompleteFile);
|
|
1680
1697
|
if (existsSync4(signalPath)) {
|
package/dist/omx/index.mjs
CHANGED
|
@@ -325,7 +325,7 @@ import { join as join4 } from "node:path";
|
|
|
325
325
|
// package.json
|
|
326
326
|
var package_default = {
|
|
327
327
|
name: "@ksm0709/context",
|
|
328
|
-
version: "0.0.
|
|
328
|
+
version: "0.0.22",
|
|
329
329
|
author: {
|
|
330
330
|
name: "TaehoKang",
|
|
331
331
|
email: "ksm07091@gmail.com"
|
|
@@ -367,7 +367,7 @@ var package_default = {
|
|
|
367
367
|
"@opencode-ai/plugin": ">=1.0.0"
|
|
368
368
|
},
|
|
369
369
|
dependencies: {
|
|
370
|
-
"@ksm0709/context": "^0.0.
|
|
370
|
+
"@ksm0709/context": "^0.0.21",
|
|
371
371
|
"jsonc-parser": "^3.0.0"
|
|
372
372
|
},
|
|
373
373
|
devDependencies: {
|
|
@@ -397,7 +397,7 @@ var DEFAULT_CONFIG = `{
|
|
|
397
397
|
"turnEnd": "prompts/turn-end.md"
|
|
398
398
|
},
|
|
399
399
|
"knowledge": {
|
|
400
|
-
"dir": "
|
|
400
|
+
"dir": ".context/memory",
|
|
401
401
|
"sources": ["AGENTS.md"]
|
|
402
402
|
},
|
|
403
403
|
"omx": {
|
|
@@ -441,6 +441,7 @@ var DEFAULT_TURN_START = `## Knowledge Context
|
|
|
441
441
|
- 지식 노트에 없는 새로운 결정이나 반복 가치가 있는 발견은 작업 메모나 지식 노트 후보로 기록하세요
|
|
442
442
|
`;
|
|
443
443
|
var DEFAULT_TURN_END = `## TURN END 작업 지침
|
|
444
|
+
이 지침은 에이전트를 위한 것이며, 사용자에게 직접적으로 노출하지 않습니다.
|
|
444
445
|
아래 메뉴 중 하나를 선택해 진행 상황에 맞게 수행하세요.
|
|
445
446
|
**반드시 링크된 가이드를 참고하여 정확히 수행해야 합니다.**
|
|
446
447
|
|
|
@@ -1027,7 +1028,7 @@ async function onTurnComplete(event, sdk) {
|
|
|
1027
1028
|
turnId: event.turn_id ?? ""
|
|
1028
1029
|
};
|
|
1029
1030
|
const turnEndPath = resolvePromptPath(projectDir, contextDir, config.prompts.turnEnd ?? join5(DEFAULTS.promptDir, DEFAULTS.turnEndFile));
|
|
1030
|
-
|
|
1031
|
+
let turnEndRaw = readPromptFile(turnEndPath);
|
|
1031
1032
|
if (!turnEndRaw) {
|
|
1032
1033
|
await sdk.log.info("turn_end_skipped_empty_prompt", {
|
|
1033
1034
|
event: event.event,
|
|
@@ -1036,6 +1037,13 @@ async function onTurnComplete(event, sdk) {
|
|
|
1036
1037
|
});
|
|
1037
1038
|
return;
|
|
1038
1039
|
}
|
|
1040
|
+
if (turnEndRaw.includes("<!-- context:start -->") || turnEndRaw.includes("## Knowledge Context")) {
|
|
1041
|
+
const defaultTurnEndPath = join5(projectDir, DEFAULTS.promptDir, DEFAULTS.turnEndFile);
|
|
1042
|
+
turnEndRaw = readPromptFile(defaultTurnEndPath);
|
|
1043
|
+
if (!turnEndRaw) {
|
|
1044
|
+
return;
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1039
1047
|
if (typeof sdk.tmux?.sendKeys !== "function") {
|
|
1040
1048
|
await logWarn(sdk, "turn_end_sendkeys_failed", {
|
|
1041
1049
|
event: event.event,
|
|
@@ -1045,11 +1053,13 @@ async function onTurnComplete(event, sdk) {
|
|
|
1045
1053
|
});
|
|
1046
1054
|
return;
|
|
1047
1055
|
}
|
|
1048
|
-
const turnEnd = resolvePromptVariables(turnEndRaw, promptVars);
|
|
1056
|
+
const turnEnd = resolvePromptVariables(turnEndRaw, promptVars).trim();
|
|
1049
1057
|
const reminderText = `<system-reminder>
|
|
1050
1058
|
${turnEnd}
|
|
1051
1059
|
</system-reminder>`;
|
|
1052
1060
|
const sessionName = typeof event.context?.session_name === "string" && event.context.session_name.trim().length > 0 ? event.context.session_name.trim() : undefined;
|
|
1061
|
+
await new Promise((resolve) => globalThis.setTimeout(resolve, 500));
|
|
1062
|
+
if (typeof sdk.tmux?.sendKeys === "function") {}
|
|
1053
1063
|
const result = await sdk.tmux.sendKeys({
|
|
1054
1064
|
sessionName,
|
|
1055
1065
|
text: reminderText,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ksm0709/context",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "TaehoKang",
|
|
6
6
|
"email": "ksm07091@gmail.com"
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@opencode-ai/plugin": ">=1.0.0"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@ksm0709/context": "^0.0.
|
|
45
|
+
"@ksm0709/context": "^0.0.21",
|
|
46
46
|
"jsonc-parser": "^3.0.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|