@selesai/code 0.7.0 → 0.8.0

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.
Files changed (72) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +4 -2
  3. package/dist/extensions/agent-browser.test.ts +195 -0
  4. package/dist/extensions/agent-browser.ts +158 -0
  5. package/dist/extensions/inline-skills.test.ts +14 -0
  6. package/dist/extensions/inline-skills.ts +14 -7
  7. package/dist/extensions/package.json +2 -1
  8. package/dist/extensions/pi-powerline-footer/.github/workflows/test.yml +27 -0
  9. package/dist/extensions/pi-powerline-footer/CHANGELOG.md +153 -0
  10. package/dist/extensions/pi-powerline-footer/CONTRIBUTING.md +16 -0
  11. package/dist/extensions/pi-powerline-footer/README.md +192 -44
  12. package/dist/extensions/pi-powerline-footer/bash-mode/completion.ts +19 -4
  13. package/dist/extensions/pi-powerline-footer/bash-mode/editor.ts +80 -25
  14. package/dist/extensions/pi-powerline-footer/bash-mode/history.ts +81 -29
  15. package/dist/extensions/pi-powerline-footer/bash-mode/types.ts +1 -1
  16. package/dist/extensions/pi-powerline-footer/cd-command.ts +190 -0
  17. package/dist/extensions/pi-powerline-footer/colors.ts +2 -1
  18. package/dist/extensions/pi-powerline-footer/context-usage.ts +121 -6
  19. package/dist/extensions/pi-powerline-footer/currency-rates.ts +142 -0
  20. package/dist/extensions/pi-powerline-footer/editor-composition.ts +32 -0
  21. package/dist/extensions/pi-powerline-footer/git-status.ts +108 -6
  22. package/dist/extensions/pi-powerline-footer/icons.ts +11 -2
  23. package/dist/extensions/pi-powerline-footer/index.ts +1056 -324
  24. package/dist/extensions/pi-powerline-footer/lifecycle.ts +10 -0
  25. package/dist/extensions/pi-powerline-footer/package.json +10 -6
  26. package/dist/extensions/pi-powerline-footer/paths.ts +22 -0
  27. package/dist/extensions/pi-powerline-footer/powerline-config.ts +297 -15
  28. package/dist/extensions/pi-powerline-footer/presets.ts +6 -25
  29. package/dist/extensions/pi-powerline-footer/queue/store.ts +361 -0
  30. package/dist/extensions/pi-powerline-footer/queue/types.ts +54 -0
  31. package/dist/extensions/pi-powerline-footer/render-scheduler.ts +12 -7
  32. package/dist/extensions/pi-powerline-footer/segments.ts +114 -107
  33. package/dist/extensions/pi-powerline-footer/session-usage.ts +1 -1
  34. package/dist/extensions/pi-powerline-footer/shortcuts.ts +17 -3
  35. package/dist/extensions/pi-powerline-footer/tests/bash-mode.test.ts +189 -17
  36. package/dist/extensions/pi-powerline-footer/tests/cd-command.test.ts +144 -0
  37. package/dist/extensions/pi-powerline-footer/tests/context-usage.test.ts +120 -2
  38. package/dist/extensions/pi-powerline-footer/tests/custom-items.test.ts +245 -22
  39. package/dist/extensions/pi-powerline-footer/tests/editor-composition.test.ts +48 -0
  40. package/dist/extensions/pi-powerline-footer/tests/editor-responsiveness.test.ts +34 -0
  41. package/dist/extensions/pi-powerline-footer/tests/fixed-editor-border.test.ts +39 -0
  42. package/dist/extensions/pi-powerline-footer/tests/git-status.test.ts +92 -0
  43. package/dist/extensions/pi-powerline-footer/tests/guide.test.ts +4 -1
  44. package/dist/extensions/pi-powerline-footer/tests/jump-shortcuts.test.ts +33 -197
  45. package/dist/extensions/pi-powerline-footer/tests/mode-aware-trigger.test.ts +79 -0
  46. package/dist/extensions/pi-powerline-footer/tests/paths.test.ts +63 -0
  47. package/dist/extensions/pi-powerline-footer/tests/queue-store.test.ts +195 -0
  48. package/dist/extensions/pi-powerline-footer/tests/quit-cursor.test.ts +14 -0
  49. package/dist/extensions/pi-powerline-footer/tests/remaining-regressions.test.ts +167 -0
  50. package/dist/extensions/pi-powerline-footer/tests/stash-shortcut.test.ts +23 -18
  51. package/dist/extensions/pi-powerline-footer/tests/thinking-segment.test.ts +16 -1
  52. package/dist/extensions/pi-powerline-footer/tests/token-stats.test.ts +249 -0
  53. package/dist/extensions/pi-powerline-footer/tests/usage-display.test.ts +237 -0
  54. package/dist/extensions/pi-powerline-footer/tests/welcome.test.ts +199 -0
  55. package/dist/extensions/pi-powerline-footer/tests/working-vibes.test.ts +191 -100
  56. package/dist/extensions/pi-powerline-footer/theme.ts +32 -18
  57. package/dist/extensions/pi-powerline-footer/token-stats.ts +304 -0
  58. package/dist/extensions/pi-powerline-footer/tsconfig.json +13 -0
  59. package/dist/extensions/pi-powerline-footer/types.ts +74 -29
  60. package/dist/extensions/pi-powerline-footer/welcome-dismiss.ts +34 -0
  61. package/dist/extensions/pi-powerline-footer/welcome.ts +65 -10
  62. package/dist/extensions/pi-powerline-footer/working-vibes.ts +44 -11
  63. package/dist/extensions/pi-subagents/package-lock.json +2 -2
  64. package/dist/extensions/pi-subagents/package.json +1 -1
  65. package/dist/extensions/pi-subagents/src/slash/inline-subagents.ts +57 -24
  66. package/dist/extensions/pi-subagents/test/unit/inline-subagents.test.ts +82 -7
  67. package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +1 -1
  68. package/dist/extensions/ponytail/index.js +1 -31
  69. package/dist/extensions/ponytail/test/extension.test.js +5 -22
  70. package/dist/extensions/rtk.test.ts +27 -12
  71. package/dist/extensions/rtk.ts +41 -35
  72. package/package.json +1 -1
@@ -70,48 +70,54 @@ async function rewriteCommand(
70
70
  return result.stdout.trim() || null
71
71
  }
72
72
 
73
- export default async function (pi: ExtensionAPI) {
73
+ export default function (pi: ExtensionAPI) {
74
74
  // Explicit opt-out must also prevent an automatic managed-binary download.
75
75
  if (process.env.RTK_DISABLED === "1") return
76
76
 
77
- let rtkPath: string | undefined
78
- try {
79
- rtkPath = await ensureTool("rtk")
80
- } catch (err) {
81
- console.warn(`[rtk] managed installation failed: ${err instanceof Error ? err.message : String(err)}`)
82
- }
83
-
84
- if (!rtkPath) {
85
- console.warn("[rtk] unavailable; install from https://github.com/rtk-ai/rtk")
86
- return
87
- }
88
-
89
- try {
90
- if (!(await probeRtk(pi, rtkPath))) return
91
- } catch (err) {
92
- console.warn(`[rtk] verification failed: ${err instanceof Error ? err.message : String(err)} — extension disabled`)
93
- return
94
- }
95
-
96
- pi.on("tool_call", async (event, ctx) => {
77
+ // Provisioning may download the managed binary from GitHub (with 120s timeouts)
78
+ // and probe system binaries. Running it in the extension factory would block the
79
+ // whole startup on a slow/unreachable network, so defer it off the critical path.
80
+ // Bash commands issued before the hook registers simply pass through un-rewritten.
81
+ void (async () => {
82
+ let rtkPath: string | undefined
97
83
  try {
98
- if (!isToolCallEventType("bash", event)) return
99
-
100
- const cmd = event.input.command
101
- if (typeof cmd !== "string" || cmd.trim() === "") return
84
+ rtkPath = await ensureTool("rtk")
85
+ } catch (err) {
86
+ console.warn(`[rtk] managed installation failed: ${err instanceof Error ? err.message : String(err)}`)
87
+ }
102
88
 
103
- if (cmd.trimStart().startsWith("rtk ")) return
104
- if (process.env.RTK_DISABLED === "1") return
89
+ if (!rtkPath) {
90
+ console.warn("[rtk] unavailable; install from https://github.com/rtk-ai/rtk")
91
+ return
92
+ }
105
93
 
106
- // Delegate to RTK.
107
- const rewritten = await rewriteCommand(pi, rtkPath, cmd, ctx.signal)
108
- if (rewritten && rewritten !== cmd) {
109
- event.input.command = rewritten
110
- }
94
+ try {
95
+ if (!(await probeRtk(pi, rtkPath))) return
111
96
  } catch (err) {
112
- // Fail open: never block execution on an unexpected error.
113
- console.warn("[rtk] unexpected error in tool_call handler; passing through command", err)
97
+ console.warn(`[rtk] verification failed: ${err instanceof Error ? err.message : String(err)} — extension disabled`)
114
98
  return
115
99
  }
116
- })
100
+
101
+ pi.on("tool_call", async (event, ctx) => {
102
+ try {
103
+ if (!isToolCallEventType("bash", event)) return
104
+
105
+ const cmd = event.input.command
106
+ if (typeof cmd !== "string" || cmd.trim() === "") return
107
+
108
+ if (cmd.trimStart().startsWith("rtk ")) return
109
+ if (process.env.RTK_DISABLED === "1") return
110
+
111
+ // Delegate to RTK.
112
+ const rewritten = await rewriteCommand(pi, rtkPath, cmd, ctx.signal)
113
+ if (rewritten && rewritten !== cmd) {
114
+ event.input.command = rewritten
115
+ }
116
+ } catch (err) {
117
+ // Fail open: never block execution on an unexpected error.
118
+ console.warn("[rtk] unexpected error in tool_call handler; passing through command", err)
119
+ return
120
+ }
121
+ })
122
+ })()
117
123
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@selesai/code",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Maintained, extension-first Pi coding agent with built-in workflows, subagents, web research, questions, skills, and an enhanced terminal UI.",
5
5
  "type": "module",
6
6
  "repository": {