@jc01rho/opencode-smart-title 0.3.0 → 0.3.9
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 +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +80 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/session.d.ts +1 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +74 -3
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/title.d.ts +1 -1
- package/dist/lib/title.d.ts.map +1 -1
- package/dist/lib/title.js +12 -4
- package/dist/lib/title.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -57,17 +57,18 @@ The plugin creates a default global config on first run.
|
|
|
57
57
|
|
|
58
58
|
- Terminal title updates are best-effort and depend on your terminal supporting OSC title sequences
|
|
59
59
|
- The plugin prefers TTY-safe writes and includes tmux/screen-compatible wrapping when needed
|
|
60
|
-
- Running status is shown as
|
|
61
|
-
-
|
|
60
|
+
- Running status is shown as `🟢`
|
|
61
|
+
- Subagent-only activity while the main session is idle is shown as `🤖`
|
|
62
|
+
- Idle status is shown as `💤`
|
|
62
63
|
|
|
63
64
|
## GitHub Actions Publish
|
|
64
65
|
|
|
65
66
|
This repository includes GitHub Actions for CI and npm publishing.
|
|
66
67
|
|
|
67
68
|
- `ci.yml` runs `npm run typecheck` and `npm run build` on pushes and pull requests to `master`
|
|
68
|
-
- `publish.yml`
|
|
69
|
+
- `publish.yml` runs on `v*` tag pushes and can also be started manually with a `tag_name` input; it checks that the tag matches `package.json.version`, creates the matching GitHub Release if needed, and then publishes to npm
|
|
69
70
|
- Add an `NPM_TOKEN` repository secret in GitHub Actions settings before using the publish workflow
|
|
70
|
-
- Keep the `package.json` version updated before
|
|
71
|
+
- Keep the `package.json` version updated before pushing the `v*` tag that should create the GitHub Release and publish to npm
|
|
71
72
|
|
|
72
73
|
## License
|
|
73
74
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAUjD,QAAA,MAAM,gBAAgB,EAAE,MAuNvB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
import { getConfig } from "./lib/config.js";
|
|
14
14
|
import { Logger } from "./lib/logger.js";
|
|
15
15
|
import { updateSessionTitle, updateTerminalTitle } from "./lib/title.js";
|
|
16
|
-
import { isSubagentSession, sessionIdleCount } from "./lib/session.js";
|
|
16
|
+
import { getRootSessionID, isSubagentSession, sessionIdleCount } from "./lib/session.js";
|
|
17
17
|
import { join } from "path";
|
|
18
18
|
import { homedir } from "os";
|
|
19
|
+
const SUBAGENT_ACTIVITY_TTL_MS = 5 * 60 * 1000;
|
|
19
20
|
const SmartTitlePlugin = async (ctx) => {
|
|
20
21
|
const config = getConfig(ctx);
|
|
21
22
|
if (!config.enabled) {
|
|
@@ -24,6 +25,8 @@ const SmartTitlePlugin = async (ctx) => {
|
|
|
24
25
|
const logger = new Logger(config.debug);
|
|
25
26
|
const { client } = ctx;
|
|
26
27
|
let lastTerminalStatusSync = null;
|
|
28
|
+
const rootSessionStatuses = new Map();
|
|
29
|
+
const activeSubagentsByRoot = new Map();
|
|
27
30
|
const getEventSessionId = (event) => {
|
|
28
31
|
if (!event.properties || typeof event.properties !== "object") {
|
|
29
32
|
return undefined;
|
|
@@ -34,19 +37,86 @@ const SmartTitlePlugin = async (ctx) => {
|
|
|
34
37
|
const { sessionID } = event.properties;
|
|
35
38
|
return typeof sessionID === "string" ? sessionID : undefined;
|
|
36
39
|
};
|
|
40
|
+
const getActiveSubagentMap = (rootSessionId) => {
|
|
41
|
+
let activeSubagents = activeSubagentsByRoot.get(rootSessionId);
|
|
42
|
+
if (!activeSubagents) {
|
|
43
|
+
activeSubagents = new Map();
|
|
44
|
+
activeSubagentsByRoot.set(rootSessionId, activeSubagents);
|
|
45
|
+
}
|
|
46
|
+
return activeSubagents;
|
|
47
|
+
};
|
|
48
|
+
const pruneExpiredSubagentActivity = (rootSessionId) => {
|
|
49
|
+
const activeSubagents = activeSubagentsByRoot.get(rootSessionId);
|
|
50
|
+
if (!activeSubagents) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const now = Date.now();
|
|
54
|
+
for (const [subagentSessionId, lastSeenActiveAt] of activeSubagents.entries()) {
|
|
55
|
+
if (now - lastSeenActiveAt > SUBAGENT_ACTIVITY_TTL_MS) {
|
|
56
|
+
activeSubagents.delete(subagentSessionId);
|
|
57
|
+
logger.debug("terminal-title", "Pruned stale subagent activity from terminal state", {
|
|
58
|
+
rootSessionId,
|
|
59
|
+
subagentSessionId,
|
|
60
|
+
ttlMs: SUBAGENT_ACTIVITY_TTL_MS
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (activeSubagents.size === 0) {
|
|
65
|
+
activeSubagentsByRoot.delete(rootSessionId);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const markSubagentActivity = (rootSessionId, sessionId, isActive) => {
|
|
69
|
+
const activeSubagents = getActiveSubagentMap(rootSessionId);
|
|
70
|
+
if (isActive) {
|
|
71
|
+
activeSubagents.set(sessionId, Date.now());
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
activeSubagents.delete(sessionId);
|
|
75
|
+
if (activeSubagents.size === 0) {
|
|
76
|
+
activeSubagentsByRoot.delete(rootSessionId);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const getEffectiveTerminalStatus = (rootSessionId) => {
|
|
80
|
+
pruneExpiredSubagentActivity(rootSessionId);
|
|
81
|
+
if (rootSessionStatuses.get(rootSessionId) === "running") {
|
|
82
|
+
return "running";
|
|
83
|
+
}
|
|
84
|
+
const activeSubagents = activeSubagentsByRoot.get(rootSessionId);
|
|
85
|
+
if (activeSubagents && activeSubagents.size > 0) {
|
|
86
|
+
return "subagent";
|
|
87
|
+
}
|
|
88
|
+
return "idle";
|
|
89
|
+
};
|
|
37
90
|
const syncTerminalStatus = async (sessionId, status) => {
|
|
38
91
|
if (!sessionId) {
|
|
39
92
|
return;
|
|
40
93
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
94
|
+
const isSubagent = await isSubagentSession(client, sessionId, logger);
|
|
95
|
+
const rootSessionId = isSubagent
|
|
96
|
+
? await getRootSessionID(client, sessionId, logger)
|
|
97
|
+
: sessionId;
|
|
98
|
+
if (isSubagent) {
|
|
99
|
+
markSubagentActivity(rootSessionId, sessionId, status === "running");
|
|
44
100
|
}
|
|
45
|
-
|
|
101
|
+
else {
|
|
102
|
+
rootSessionStatuses.set(rootSessionId, status);
|
|
103
|
+
}
|
|
104
|
+
const effectiveStatus = getEffectiveTerminalStatus(rootSessionId);
|
|
105
|
+
if (lastTerminalStatusSync?.rootSessionId === rootSessionId &&
|
|
106
|
+
lastTerminalStatusSync.status === effectiveStatus) {
|
|
46
107
|
return;
|
|
47
108
|
}
|
|
48
|
-
updateTerminalTitle(ctx.directory,
|
|
49
|
-
lastTerminalStatusSync = {
|
|
109
|
+
updateTerminalTitle(ctx.directory, effectiveStatus, logger);
|
|
110
|
+
lastTerminalStatusSync = { rootSessionId, status: effectiveStatus };
|
|
111
|
+
logger.debug("terminal-title", "Synchronized effective terminal status", {
|
|
112
|
+
sessionId,
|
|
113
|
+
rootSessionId,
|
|
114
|
+
isSubagent,
|
|
115
|
+
requestedStatus: status,
|
|
116
|
+
effectiveStatus,
|
|
117
|
+
activeSubagentCount: activeSubagentsByRoot.get(rootSessionId)?.size ?? 0,
|
|
118
|
+
rootStatus: rootSessionStatuses.get(rootSessionId) ?? "idle"
|
|
119
|
+
});
|
|
50
120
|
};
|
|
51
121
|
logger.info('plugin', 'Smart Title plugin initialized', {
|
|
52
122
|
enabled: config.enabled,
|
|
@@ -78,6 +148,9 @@ const SmartTitlePlugin = async (ctx) => {
|
|
|
78
148
|
return;
|
|
79
149
|
}
|
|
80
150
|
if (await isSubagentSession(client, sessionId, logger)) {
|
|
151
|
+
logger.debug('event', 'Skipping AI title generation for subagent idle event', {
|
|
152
|
+
sessionId
|
|
153
|
+
});
|
|
81
154
|
return;
|
|
82
155
|
}
|
|
83
156
|
const currentCount = (sessionIdleCount.get(sessionId) || 0) + 1;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAuB,MAAM,gBAAgB,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/session.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { OpenCodeClient } from "./types.js";
|
|
2
2
|
import type { Logger } from "./logger.js";
|
|
3
|
+
export declare function getRootSessionID(client: OpenCodeClient, sessionID: string, logger: Logger): Promise<string>;
|
|
3
4
|
export declare function isSubagentSession(client: OpenCodeClient, sessionID: string, logger: Logger): Promise<boolean>;
|
|
4
5
|
export declare const sessionIdleCount: Map<string, number>;
|
|
5
6
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAqFzC,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAgDlB;AAED,eAAO,MAAM,gBAAgB,qBAA4B,CAAA"}
|
package/dist/lib/session.js
CHANGED
|
@@ -1,5 +1,76 @@
|
|
|
1
1
|
const subagentSessionCache = new Map();
|
|
2
2
|
const subagentSessionChecksInFlight = new Map();
|
|
3
|
+
const sessionRootCache = new Map();
|
|
4
|
+
const sessionRootChecksInFlight = new Map();
|
|
5
|
+
async function resolveSessionRoot(client, sessionID, logger) {
|
|
6
|
+
const cachedRoot = sessionRootCache.get(sessionID);
|
|
7
|
+
if (cachedRoot) {
|
|
8
|
+
return cachedRoot;
|
|
9
|
+
}
|
|
10
|
+
const existingCheck = sessionRootChecksInFlight.get(sessionID);
|
|
11
|
+
if (existingCheck) {
|
|
12
|
+
return await existingCheck;
|
|
13
|
+
}
|
|
14
|
+
const checkPromise = (async () => {
|
|
15
|
+
const lineage = [];
|
|
16
|
+
const seen = new Set();
|
|
17
|
+
let currentSessionID = sessionID;
|
|
18
|
+
while (true) {
|
|
19
|
+
const cached = sessionRootCache.get(currentSessionID);
|
|
20
|
+
if (cached) {
|
|
21
|
+
for (const lineageSessionID of lineage) {
|
|
22
|
+
sessionRootCache.set(lineageSessionID, cached);
|
|
23
|
+
subagentSessionCache.set(lineageSessionID, lineageSessionID !== cached);
|
|
24
|
+
}
|
|
25
|
+
return cached;
|
|
26
|
+
}
|
|
27
|
+
if (seen.has(currentSessionID)) {
|
|
28
|
+
logger.warn("subagent-check", "Detected cyclic parent session chain while resolving root session", {
|
|
29
|
+
sessionID,
|
|
30
|
+
currentSessionID
|
|
31
|
+
});
|
|
32
|
+
for (const lineageSessionID of lineage) {
|
|
33
|
+
sessionRootCache.set(lineageSessionID, sessionID);
|
|
34
|
+
subagentSessionCache.set(lineageSessionID, lineageSessionID !== sessionID);
|
|
35
|
+
}
|
|
36
|
+
sessionRootCache.set(sessionID, sessionID);
|
|
37
|
+
subagentSessionCache.set(sessionID, false);
|
|
38
|
+
return sessionID;
|
|
39
|
+
}
|
|
40
|
+
seen.add(currentSessionID);
|
|
41
|
+
lineage.push(currentSessionID);
|
|
42
|
+
const result = await client.session.get({ path: { id: currentSessionID } });
|
|
43
|
+
const parentID = typeof result.data?.parentID === "string" ? result.data.parentID : undefined;
|
|
44
|
+
if (!parentID) {
|
|
45
|
+
for (const lineageSessionID of lineage) {
|
|
46
|
+
sessionRootCache.set(lineageSessionID, currentSessionID);
|
|
47
|
+
subagentSessionCache.set(lineageSessionID, lineageSessionID !== currentSessionID);
|
|
48
|
+
}
|
|
49
|
+
return currentSessionID;
|
|
50
|
+
}
|
|
51
|
+
currentSessionID = parentID;
|
|
52
|
+
}
|
|
53
|
+
})();
|
|
54
|
+
sessionRootChecksInFlight.set(sessionID, checkPromise);
|
|
55
|
+
try {
|
|
56
|
+
return await checkPromise;
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
sessionRootChecksInFlight.delete(sessionID);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export async function getRootSessionID(client, sessionID, logger) {
|
|
63
|
+
try {
|
|
64
|
+
return await resolveSessionRoot(client, sessionID, logger);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
logger.error("subagent-check", "Failed to resolve root session", {
|
|
68
|
+
sessionID,
|
|
69
|
+
error: error.message
|
|
70
|
+
});
|
|
71
|
+
return sessionID;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
3
74
|
export async function isSubagentSession(client, sessionID, logger) {
|
|
4
75
|
try {
|
|
5
76
|
const cached = subagentSessionCache.get(sessionID);
|
|
@@ -11,13 +82,13 @@ export async function isSubagentSession(client, sessionID, logger) {
|
|
|
11
82
|
return await existingCheck;
|
|
12
83
|
}
|
|
13
84
|
const checkPromise = (async () => {
|
|
14
|
-
const
|
|
15
|
-
const isSubagent =
|
|
85
|
+
const rootSessionID = await resolveSessionRoot(client, sessionID, logger);
|
|
86
|
+
const isSubagent = rootSessionID !== sessionID;
|
|
16
87
|
subagentSessionCache.set(sessionID, isSubagent);
|
|
17
88
|
if (isSubagent) {
|
|
18
89
|
logger.debug("subagent-check", "Detected subagent session, skipping title generation", {
|
|
19
90
|
sessionID,
|
|
20
|
-
|
|
91
|
+
rootSessionID
|
|
21
92
|
});
|
|
22
93
|
}
|
|
23
94
|
return isSubagent;
|
package/dist/lib/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../lib/session.ts"],"names":[],"mappings":"AAGA,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAmB,CAAA;AACvD,MAAM,6BAA6B,GAAG,IAAI,GAAG,EAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../lib/session.ts"],"names":[],"mappings":"AAGA,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAmB,CAAA;AACvD,MAAM,6BAA6B,GAAG,IAAI,GAAG,EAA4B,CAAA;AACzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAA;AAClD,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAA2B,CAAA;AAEpE,KAAK,UAAU,kBAAkB,CAC7B,MAAsB,EACtB,SAAiB,EACjB,MAAc;IAEd,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAElD,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAE9D,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,MAAM,aAAa,CAAA;IAC9B,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,IAAI,gBAAgB,GAAG,SAAS,CAAA;QAEhC,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAErD,IAAI,MAAM,EAAE,CAAC;gBACT,KAAK,MAAM,gBAAgB,IAAI,OAAO,EAAE,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;oBAC9C,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAA;gBAC3E,CAAC;gBAED,OAAO,MAAM,CAAA;YACjB,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,mEAAmE,EAAE;oBAC/F,SAAS;oBACT,gBAAgB;iBACnB,CAAC,CAAA;gBAEF,KAAK,MAAM,gBAAgB,IAAI,OAAO,EAAE,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;oBACjD,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAA;gBAC9E,CAAC;gBAED,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;gBAC1C,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;gBAC1C,OAAO,SAAS,CAAA;YACpB,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC1B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAE9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAA;YAC3E,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;YAE7F,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,KAAK,MAAM,gBAAgB,IAAI,OAAO,EAAE,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;oBACxD,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,KAAK,gBAAgB,CAAC,CAAA;gBACrF,CAAC;gBAED,OAAO,gBAAgB,CAAA;YAC3B,CAAC;YAED,gBAAgB,GAAG,QAAQ,CAAA;QAC/B,CAAC;IACL,CAAC,CAAC,EAAE,CAAA;IAEJ,yBAAyB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAEtD,IAAI,CAAC;QACD,OAAO,MAAM,YAAY,CAAA;IAC7B,CAAC;YAAS,CAAC;QACP,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC/C,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAsB,EACtB,SAAiB,EACjB,MAAc;IAEd,IAAI,CAAC;QACD,OAAO,MAAM,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAC9D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,gCAAgC,EAAE;YAC7D,SAAS;YACT,KAAK,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAsB,EACtB,SAAiB,EACjB,MAAc;IAEd,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAElD,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,MAAM,aAAa,GAAG,6BAA6B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAElE,IAAI,aAAa,EAAE,CAAC;YAChB,OAAO,MAAM,aAAa,CAAA;QAC9B,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;YACzE,MAAM,UAAU,GAAG,aAAa,KAAK,SAAS,CAAA;YAE9C,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YAE/C,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,sDAAsD,EAAE;oBACnF,SAAS;oBACT,aAAa;iBAChB,CAAC,CAAA;YACN,CAAC;YAED,OAAO,UAAU,CAAA;QACrB,CAAC,CAAC,EAAE,CAAA;QAEJ,6BAA6B,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAE1D,MAAM,UAAU,GAAG,MAAM,YAAY,CAAA;QACrC,6BAA6B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAE/C,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,6BAA6B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC/C,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,wCAAwC,EAAE;YACrE,SAAS;YACT,KAAK,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAA"}
|
package/dist/lib/title.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { OpenCodeClient } from "./types.js";
|
|
2
2
|
import type { Logger } from "./logger.js";
|
|
3
3
|
import type { PluginConfig } from "./config.js";
|
|
4
|
-
export type TerminalStatus = "idle" | "running";
|
|
4
|
+
export type TerminalStatus = "idle" | "running" | "subagent";
|
|
5
5
|
export declare function updateTerminalTitle(directory: string | undefined, status: TerminalStatus, logger: Logger): void;
|
|
6
6
|
export declare function cleanTitle(raw: string): string;
|
|
7
7
|
export declare function generateTitleFromContext(context: string, configModel: string | undefined, logger: Logger, client: OpenCodeClient): Promise<string | null>;
|
package/dist/lib/title.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../lib/title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM/C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAA;AA+
|
|
1
|
+
{"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../lib/title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM/C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;AA+C5D,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACf,IAAI,CAoCN;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW9C;AAED,wBAAsB,wBAAwB,CAC1C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsExB;AAED,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC,CAmFf"}
|
package/dist/lib/title.js
CHANGED
|
@@ -13,8 +13,8 @@ function sanitizeTerminalTitle(value) {
|
|
|
13
13
|
}
|
|
14
14
|
function formatTerminalTitle(directory, status) {
|
|
15
15
|
const projectName = directory ? basename(directory) || "opencode" : "opencode";
|
|
16
|
-
const decoratedStatus = status === "running" ? "🟢
|
|
17
|
-
return sanitizeTerminalTitle(`${
|
|
16
|
+
const decoratedStatus = status === "running" ? "🟢" : status === "subagent" ? "🤖" : "💤";
|
|
17
|
+
return sanitizeTerminalTitle(`${decoratedStatus} ${projectName}`);
|
|
18
18
|
}
|
|
19
19
|
function getTerminalWriter() {
|
|
20
20
|
if (process.stdout.isTTY) {
|
|
@@ -162,12 +162,20 @@ export async function updateSessionTitle(client, sessionId, logger, config) {
|
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
164
|
const context = formatContextForTitle(turns);
|
|
165
|
-
logger.debug('update-title', 'Formatted context prepared
|
|
165
|
+
logger.debug('update-title', 'Formatted context prepared for title generation', {
|
|
166
166
|
sessionId,
|
|
167
167
|
contextLength: context.length,
|
|
168
168
|
configuredModel: config.model
|
|
169
169
|
});
|
|
170
|
-
const newTitle =
|
|
170
|
+
const newTitle = await generateTitleFromContext(context, config.model, logger, client);
|
|
171
|
+
if (!newTitle) {
|
|
172
|
+
logger.warn('update-title', 'Title generation returned no title, keeping existing session title', {
|
|
173
|
+
sessionId,
|
|
174
|
+
contextLength: context.length,
|
|
175
|
+
configuredModel: config.model
|
|
176
|
+
});
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
171
179
|
logger.info('update-title', 'Updating session with new title', {
|
|
172
180
|
sessionId,
|
|
173
181
|
title: newTitle
|
package/dist/lib/title.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title.js","sourceRoot":"","sources":["../../lib/title.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAI/B,IAAI,iBAAiB,GAAkB,IAAI,CAAA;AAC3C,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAU,CAAA;AACrD,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAU,CAAA;AAMnD,SAAS,qBAAqB,CAAC,KAAa;IACxC,OAAO,KAAK;SACP,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAA;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,SAA6B,EAAE,MAAsB;IAC9E,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAC9E,MAAM,eAAe,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"title.js","sourceRoot":"","sources":["../../lib/title.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@jc01rho/opencode-smart-title",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.9",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "OpenCode plugin that automatically generates meaningful session titles using AI and smart context selection",
|
|
7
7
|
"main": "./dist/index.js",
|