@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 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 `🟢 running`
61
- - Idle status is shown as `💤 idle`
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` publishes to npm when a GitHub Release is published, and can also be run manually with `workflow_dispatch`
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 creating the GitHub Release that should publish to npm
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
 
@@ -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;AAQjD,QAAA,MAAM,gBAAgB,EAAE,MA4HvB,CAAA;AAED,eAAe,gBAAgB,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
- if (lastTerminalStatusSync?.sessionId === sessionId &&
42
- lastTerminalStatusSync.status === status) {
43
- return;
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
- if (await isSubagentSession(client, sessionId, logger)) {
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, status, logger);
49
- lastTerminalStatusSync = { sessionId, status };
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;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAE5B,MAAM,gBAAgB,GAAW,KAAK,EAAE,GAAG,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IACtB,IAAI,sBAAsB,GAAyD,IAAI,CAAA;IACvF,MAAM,iBAAiB,GAAG,CAAC,KAA8B,EAAsB,EAAE;QAC7E,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAA;QACtC,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAChE,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,KAAK,EAAE,SAA6B,EAAE,MAAsB,EAAE,EAAE;QACvF,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAM;QACV,CAAC;QAED,IACI,sBAAsB,EAAE,SAAS,KAAK,SAAS;YAC/C,sBAAsB,CAAC,MAAM,KAAK,MAAM,EAC1C,CAAC;YACC,OAAM;QACV,CAAC;QAED,IAAI,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;YACrD,OAAM;QACV,CAAC;QAED,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAClD,sBAAsB,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IAClD,CAAC,CAAA;IAED,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,gCAAgC,EAAE;QACpD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC;QAC7E,iBAAiB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK;QAChG,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC;KAC9E,CAAC,CAAA;IAEF,OAAO;QACH,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACvB,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,iBAAiB,GACnB,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAC/B,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAA;YAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,iBAAiB,CAAA;YAEtE,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAC/C,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACzC,MAAM,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAClD,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;gBAE3D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,0DAA0D,EAAE;wBAC9E,SAAS,EAAE,KAAK,CAAC,IAAI;qBACxB,CAAC,CAAA;oBACF,OAAM;gBACV,CAAC;gBAED,IAAI,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;oBACrD,OAAM;gBACV,CAAC;gBAED,MAAM,YAAY,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC/D,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;gBAE7C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,oBAAoB,EAAE;oBACxC,SAAS;oBACT,YAAY;oBACZ,SAAS,EAAE,MAAM,CAAC,eAAe;iBACpC,CAAC,CAAA;gBAEF,IAAI,YAAY,GAAG,MAAM,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;oBAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,8CAA8C,EAAE;wBAClE,SAAS;wBACT,YAAY;wBACZ,SAAS,EAAE,MAAM,CAAC,eAAe;qBACpC,CAAC,CAAA;oBACF,OAAM;gBACV,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,6DAA6D,EAAE;oBAChF,SAAS;oBACT,YAAY;oBACZ,SAAS,EAAE,MAAM,CAAC,eAAe;iBACpC,CAAC,CAAA;gBAEF,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAClE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE;wBACzC,SAAS;wBACT,KAAK,EAAE,KAAK,CAAC,OAAO;wBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;qBACrB,CAAC,CAAA;gBACN,CAAC,CAAC,CAAA;YACN,CAAC;QACL,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YACpC,MAAM,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAClD,CAAC;QACD,wBAAwB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC9C,MAAM,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAClD,CAAC;QACD,qBAAqB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC3C,MAAM,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAClD,CAAC;KACJ,CAAA;AACL,CAAC,CAAA;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -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;AAKzC,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"}
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"}
@@ -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 result = await client.session.get({ path: { id: sessionID } });
15
- const isSubagent = Boolean(result.data?.parentID);
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
- parentID: result.data.parentID
91
+ rootSessionID
21
92
  });
22
93
  }
23
94
  return isSubagent;
@@ -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;AAEzE,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,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;YACpE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAEjD,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,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;iBACjC,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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../lib/session.ts"],"names":[],"mappings":"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"}
@@ -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>;
@@ -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+C/C,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,CA0Ef"}
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" ? "🟢 running" : "💤 idle";
17
- return sanitizeTerminalTitle(`${projectName} : ${decoratedStatus}`);
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 but fixed title override is enabled', {
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 = "hi";
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
@@ -1 +1 @@
1
- {"version":3,"file":"title.js","sourceRoot":"","sources":["../../lib/title.ts"],"names":[],"mappings":"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"}
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.0",
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",