@senpiper/sp-agent 0.1.1 → 0.1.3

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 (40) hide show
  1. package/README.md +2 -1
  2. package/dist/distribution.d.ts +1 -1
  3. package/dist/extension-identity.generated.d.ts +1 -1
  4. package/dist/extension-identity.generated.d.ts.map +1 -1
  5. package/dist/extension-identity.generated.js +1 -1
  6. package/dist/extension-identity.generated.js.map +1 -1
  7. package/dist/version.d.ts +1 -1
  8. package/dist/version.d.ts.map +1 -1
  9. package/dist/version.js +1 -1
  10. package/dist/version.js.map +1 -1
  11. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  12. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  13. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  14. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  15. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/loader.js +6 -0
  16. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  17. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/runner.d.ts +2 -1
  18. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  19. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/runner.js +22 -0
  20. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  21. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/types.d.ts +8 -0
  22. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  23. package/node_modules/@senpiper/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  24. package/node_modules/@senpiper/pi-coding-agent/dist/index.d.ts +1 -1
  25. package/node_modules/@senpiper/pi-coding-agent/dist/index.d.ts.map +1 -1
  26. package/node_modules/@senpiper/pi-coding-agent/dist/index.js.map +1 -1
  27. package/node_modules/@senpiper/pi-coding-agent/dist/main.d.ts.map +1 -1
  28. package/node_modules/@senpiper/pi-coding-agent/dist/main.js +6 -1
  29. package/node_modules/@senpiper/pi-coding-agent/dist/main.js.map +1 -1
  30. package/node_modules/@senpiper/pi-coding-agent/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  31. package/node_modules/@senpiper/pi-coding-agent/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  32. package/node_modules/@senpiper/sp-agent-extensions/dist/index.d.ts +1 -1
  33. package/node_modules/@senpiper/sp-agent-extensions/dist/index.d.ts.map +1 -1
  34. package/node_modules/@senpiper/sp-agent-extensions/dist/index.js +1 -1
  35. package/node_modules/@senpiper/sp-agent-extensions/dist/index.js.map +1 -1
  36. package/node_modules/@senpiper/sp-agent-extensions/dist/startup-header.d.ts +2 -1
  37. package/node_modules/@senpiper/sp-agent-extensions/dist/startup-header.d.ts.map +1 -1
  38. package/node_modules/@senpiper/sp-agent-extensions/dist/startup-header.js +9 -0
  39. package/node_modules/@senpiper/sp-agent-extensions/dist/startup-header.js.map +1 -1
  40. package/package.json +1 -1
@@ -6,5 +6,5 @@ export { clearSpGatewayWarning, createSpGatewayExtension, createSpGatewayProvide
6
6
  export { registerInteractionExtensions } from "./interactions.ts";
7
7
  export { clearOnboardingState, fetchSkillCatalog, getOnboardingStatePath, hasCompletedOnboarding, installCatalogSkills, parseSkillCatalog, selectCatalogSkills, writeOnboardingState, } from "./onboarding.ts";
8
8
  export { installOnboardingSelection, type OnboardingInstallationResult } from "./onboarding-installation.ts";
9
- export { registerSpStartupHeader, renderSpStartupHeader } from "./startup-header.ts";
9
+ export { filterSpStartupMessage, registerSpStartupHeader, renderSpStartupHeader } from "./startup-header.ts";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAAE,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["export {\n\tAskUserSchema,\n\tbuildAskUserQuestionResponse,\n\tcreateAskUserQuestionToolDefinition,\n\tregisterAskUserQuestion,\n\tvalidateAskUserQuestionEnvelope,\n} from \"./ask-user.ts\";\nexport { BTW_COMMAND_NAME, BTW_ENTRY_TYPE, executeBtw, registerBtw } from \"./btw.ts\";\nexport { handleSpCommand } from \"./commands.ts\";\nexport { createSpAgentExtension, default } from \"./extension.ts\";\nexport {\n\tclearSpGatewayWarning,\n\tcreateSpGatewayExtension,\n\tcreateSpGatewayProviderConfig,\n\tfetchSpGatewayModels,\n\tgetLegacyModelsPath,\n\tgetSpAgentDir,\n\tgetSpAuthPath,\n\tgetSpGatewayStatePath,\n\tgetSpGatewayWarning,\n\tnormalizeSpGatewayBaseUrl,\n\treadSpGatewayApiKey,\n\treadSpGatewayState,\n\tremoveSpGatewayLogin,\n\tSP_CLIENT_NAME,\n\tSP_GATEWAY_PROVIDER_ID,\n\tSP_GATEWAY_PROVIDER_NAME,\n\tSP_USER_AGENT,\n\twriteSpGatewayLogin,\n\twriteSpGatewayState,\n} from \"./gateway.ts\";\nexport { registerInteractionExtensions } from \"./interactions.ts\";\nexport {\n\tclearOnboardingState,\n\tfetchSkillCatalog,\n\tgetOnboardingStatePath,\n\thasCompletedOnboarding,\n\tinstallCatalogSkills,\n\tparseSkillCatalog,\n\tselectCatalogSkills,\n\twriteOnboardingState,\n} from \"./onboarding.ts\";\nexport { installOnboardingSelection, type OnboardingInstallationResult } from \"./onboarding-installation.ts\";\nexport { registerSpStartupHeader, renderSpStartupHeader } from \"./startup-header.ts\";\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAAE,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["export {\n\tAskUserSchema,\n\tbuildAskUserQuestionResponse,\n\tcreateAskUserQuestionToolDefinition,\n\tregisterAskUserQuestion,\n\tvalidateAskUserQuestionEnvelope,\n} from \"./ask-user.ts\";\nexport { BTW_COMMAND_NAME, BTW_ENTRY_TYPE, executeBtw, registerBtw } from \"./btw.ts\";\nexport { handleSpCommand } from \"./commands.ts\";\nexport { createSpAgentExtension, default } from \"./extension.ts\";\nexport {\n\tclearSpGatewayWarning,\n\tcreateSpGatewayExtension,\n\tcreateSpGatewayProviderConfig,\n\tfetchSpGatewayModels,\n\tgetLegacyModelsPath,\n\tgetSpAgentDir,\n\tgetSpAuthPath,\n\tgetSpGatewayStatePath,\n\tgetSpGatewayWarning,\n\tnormalizeSpGatewayBaseUrl,\n\treadSpGatewayApiKey,\n\treadSpGatewayState,\n\tremoveSpGatewayLogin,\n\tSP_CLIENT_NAME,\n\tSP_GATEWAY_PROVIDER_ID,\n\tSP_GATEWAY_PROVIDER_NAME,\n\tSP_USER_AGENT,\n\twriteSpGatewayLogin,\n\twriteSpGatewayState,\n} from \"./gateway.ts\";\nexport { registerInteractionExtensions } from \"./interactions.ts\";\nexport {\n\tclearOnboardingState,\n\tfetchSkillCatalog,\n\tgetOnboardingStatePath,\n\thasCompletedOnboarding,\n\tinstallCatalogSkills,\n\tparseSkillCatalog,\n\tselectCatalogSkills,\n\twriteOnboardingState,\n} from \"./onboarding.ts\";\nexport { installOnboardingSelection, type OnboardingInstallationResult } from \"./onboarding-installation.ts\";\nexport { filterSpStartupMessage, registerSpStartupHeader, renderSpStartupHeader } from \"./startup-header.ts\";\n"]}
@@ -6,5 +6,5 @@ export { clearSpGatewayWarning, createSpGatewayExtension, createSpGatewayProvide
6
6
  export { registerInteractionExtensions } from "./interactions.js";
7
7
  export { clearOnboardingState, fetchSkillCatalog, getOnboardingStatePath, hasCompletedOnboarding, installCatalogSkills, parseSkillCatalog, selectCatalogSkills, writeOnboardingState, } from "./onboarding.js";
8
8
  export { installOnboardingSelection } from "./onboarding-installation.js";
9
- export { registerSpStartupHeader, renderSpStartupHeader } from "./startup-header.js";
9
+ export { filterSpStartupMessage, registerSpStartupHeader, renderSpStartupHeader } from "./startup-header.js";
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAAqC,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["export {\n\tAskUserSchema,\n\tbuildAskUserQuestionResponse,\n\tcreateAskUserQuestionToolDefinition,\n\tregisterAskUserQuestion,\n\tvalidateAskUserQuestionEnvelope,\n} from \"./ask-user.ts\";\nexport { BTW_COMMAND_NAME, BTW_ENTRY_TYPE, executeBtw, registerBtw } from \"./btw.ts\";\nexport { handleSpCommand } from \"./commands.ts\";\nexport { createSpAgentExtension, default } from \"./extension.ts\";\nexport {\n\tclearSpGatewayWarning,\n\tcreateSpGatewayExtension,\n\tcreateSpGatewayProviderConfig,\n\tfetchSpGatewayModels,\n\tgetLegacyModelsPath,\n\tgetSpAgentDir,\n\tgetSpAuthPath,\n\tgetSpGatewayStatePath,\n\tgetSpGatewayWarning,\n\tnormalizeSpGatewayBaseUrl,\n\treadSpGatewayApiKey,\n\treadSpGatewayState,\n\tremoveSpGatewayLogin,\n\tSP_CLIENT_NAME,\n\tSP_GATEWAY_PROVIDER_ID,\n\tSP_GATEWAY_PROVIDER_NAME,\n\tSP_USER_AGENT,\n\twriteSpGatewayLogin,\n\twriteSpGatewayState,\n} from \"./gateway.ts\";\nexport { registerInteractionExtensions } from \"./interactions.ts\";\nexport {\n\tclearOnboardingState,\n\tfetchSkillCatalog,\n\tgetOnboardingStatePath,\n\thasCompletedOnboarding,\n\tinstallCatalogSkills,\n\tparseSkillCatalog,\n\tselectCatalogSkills,\n\twriteOnboardingState,\n} from \"./onboarding.ts\";\nexport { installOnboardingSelection, type OnboardingInstallationResult } from \"./onboarding-installation.ts\";\nexport { registerSpStartupHeader, renderSpStartupHeader } from \"./startup-header.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAAqC,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["export {\n\tAskUserSchema,\n\tbuildAskUserQuestionResponse,\n\tcreateAskUserQuestionToolDefinition,\n\tregisterAskUserQuestion,\n\tvalidateAskUserQuestionEnvelope,\n} from \"./ask-user.ts\";\nexport { BTW_COMMAND_NAME, BTW_ENTRY_TYPE, executeBtw, registerBtw } from \"./btw.ts\";\nexport { handleSpCommand } from \"./commands.ts\";\nexport { createSpAgentExtension, default } from \"./extension.ts\";\nexport {\n\tclearSpGatewayWarning,\n\tcreateSpGatewayExtension,\n\tcreateSpGatewayProviderConfig,\n\tfetchSpGatewayModels,\n\tgetLegacyModelsPath,\n\tgetSpAgentDir,\n\tgetSpAuthPath,\n\tgetSpGatewayStatePath,\n\tgetSpGatewayWarning,\n\tnormalizeSpGatewayBaseUrl,\n\treadSpGatewayApiKey,\n\treadSpGatewayState,\n\tremoveSpGatewayLogin,\n\tSP_CLIENT_NAME,\n\tSP_GATEWAY_PROVIDER_ID,\n\tSP_GATEWAY_PROVIDER_NAME,\n\tSP_USER_AGENT,\n\twriteSpGatewayLogin,\n\twriteSpGatewayState,\n} from \"./gateway.ts\";\nexport { registerInteractionExtensions } from \"./interactions.ts\";\nexport {\n\tclearOnboardingState,\n\tfetchSkillCatalog,\n\tgetOnboardingStatePath,\n\thasCompletedOnboarding,\n\tinstallCatalogSkills,\n\tparseSkillCatalog,\n\tselectCatalogSkills,\n\twriteOnboardingState,\n} from \"./onboarding.ts\";\nexport { installOnboardingSelection, type OnboardingInstallationResult } from \"./onboarding-installation.ts\";\nexport { filterSpStartupMessage, registerSpStartupHeader, renderSpStartupHeader } from \"./startup-header.ts\";\n"]}
@@ -1,4 +1,5 @@
1
- import type { ExtensionAPI, Theme } from "@senpiper/pi-coding-agent";
1
+ import type { ExtensionAPI, StartupMessage, Theme } from "@senpiper/pi-coding-agent";
2
2
  export declare function renderSpStartupHeader(theme: Theme, width: number, modelId?: string, gatewayConnected?: boolean): string[];
3
+ export declare function filterSpStartupMessage(startupMessage: StartupMessage): string | undefined;
3
4
  export declare function registerSpStartupHeader(pi: ExtensionAPI): void;
4
5
  //# sourceMappingURL=startup-header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"startup-header.d.ts","sourceRoot":"","sources":["../src/startup-header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAYrE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,UAAQ,YAoB5G;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,YAAY,QAUvD","sourcesContent":["import type { ExtensionAPI, Theme } from \"@senpiper/pi-coding-agent\";\nimport { truncateToWidth } from \"@senpiper/pi-coding-agent/runtime-deps\";\nimport { readSpGatewayState } from \"./gateway.ts\";\n\nconst LLM_IN_A_BOX_BANNER = [\n\t\" _ _ __ __ ___ _ _ _ ____ ___ __ __\",\n\t\"| | | | | \\\\/ | |_ _| \\\\ | | / \\\\ | __ ) / _ \\\\ \\\\ \\\\/ /\",\n\t\"| | | | | |\\\\/| | | || \\\\| | / _ \\\\ | _ \\\\| | | | \\\\ /\",\n\t\"| |___| |___| | | | | || |\\\\ | / ___ \\\\ | |_) | |_| | / \\\\ \",\n\t\"|_____|_____|_| |_| |___|_| \\\\_| /_/ \\\\_\\\\ |____/ \\\\___/ /_/\\\\_\\\\\",\n];\n\nexport function renderSpStartupHeader(theme: Theme, width: number, modelId?: string, gatewayConnected = false) {\n\tconst availableWidth = Math.max(1, width);\n\tconst truncateLine = (line: string) => truncateToWidth(line, availableWidth);\n\tconst status = `sp-gateway: ${gatewayConnected ? \"connected\" : \"not configured\"} · model: ${modelId ?? \"not selected\"}`;\n\tconst commands = \"/login · /model · /onboarding · /btw\";\n\n\tif (availableWidth < 68) {\n\t\treturn [\n\t\t\ttruncateLine(theme.bold(theme.fg(\"accent\", \"LLM IN A BOX\")) + theme.fg(\"dim\", \" · powered by Senpiper\")),\n\t\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t\t];\n\t}\n\n\treturn [\n\t\t...LLM_IN_A_BOX_BANNER.map((line) => truncateLine(theme.bold(theme.fg(\"accent\", line)))),\n\t\ttruncateLine(theme.fg(\"dim\", \"powered by Senpiper\")),\n\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t];\n}\n\nexport function registerSpStartupHeader(pi: ExtensionAPI) {\n\tpi.on(\"session_start\", async (_event, context) => {\n\t\tif (context.mode !== \"tui\") return;\n\t\tcontext.ui.setHeader((_tui, theme) => ({\n\t\t\trender(width) {\n\t\t\t\treturn renderSpStartupHeader(theme, width, context.model?.id, readSpGatewayState() !== undefined);\n\t\t\t},\n\t\t\tinvalidate() {},\n\t\t}));\n\t});\n}\n"]}
1
+ {"version":3,"file":"startup-header.d.ts","sourceRoot":"","sources":["../src/startup-header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAYrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,UAAQ,YAyB5G;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc,sBAEpE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,YAAY,QAWvD","sourcesContent":["import type { ExtensionAPI, StartupMessage, Theme } from \"@senpiper/pi-coding-agent\";\nimport { truncateToWidth } from \"@senpiper/pi-coding-agent/runtime-deps\";\nimport { readSpGatewayState } from \"./gateway.ts\";\n\nconst LLM_IN_A_BOX_BANNER = [\n\t\" _ _ __ __ ___ _ _ _ ____ ___ __ __\",\n\t\"| | | | | \\\\/ | |_ _| \\\\ | | / \\\\ | __ ) / _ \\\\ \\\\ \\\\/ /\",\n\t\"| | | | | |\\\\/| | | || \\\\| | / _ \\\\ | _ \\\\| | | | \\\\ /\",\n\t\"| |___| |___| | | | | || |\\\\ | / ___ \\\\ | |_) | |_| | / \\\\ \",\n\t\"|_____|_____|_| |_| |___|_| \\\\_| /_/ \\\\_\\\\ |____/ \\\\___/ /_/\\\\_\\\\\",\n];\n\nexport function renderSpStartupHeader(theme: Theme, width: number, modelId?: string, gatewayConnected = false) {\n\tconst availableWidth = Math.max(1, width);\n\tconst truncateLine = (line: string) => truncateToWidth(line, availableWidth);\n\tconst status = `sp-gateway: ${gatewayConnected ? \"connected\" : \"not configured\"} · model: ${modelId ?? \"not selected\"}`;\n\tconst loginPrompt = gatewayConnected\n\t\t? []\n\t\t: [truncateLine(theme.bold(theme.fg(\"warning\", \"Not logged in. Run /login to continue.\")))];\n\tconst commands = \"/login · /model · /onboarding · /btw\";\n\n\tif (availableWidth < 68) {\n\t\treturn [\n\t\t\ttruncateLine(theme.bold(theme.fg(\"accent\", \"LLM IN A BOX\")) + theme.fg(\"dim\", \" · powered by Senpiper\")),\n\t\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\t\t...loginPrompt,\n\t\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t\t];\n\t}\n\n\treturn [\n\t\t...LLM_IN_A_BOX_BANNER.map((line) => truncateLine(theme.bold(theme.fg(\"accent\", line)))),\n\t\ttruncateLine(theme.fg(\"dim\", \"powered by Senpiper\")),\n\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\t...loginPrompt,\n\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t];\n}\n\nexport function filterSpStartupMessage(startupMessage: StartupMessage) {\n\treturn startupMessage.type === \"no-model\" ? undefined : startupMessage.message;\n}\n\nexport function registerSpStartupHeader(pi: ExtensionAPI) {\n\tpi.registerStartupMessageFilter(filterSpStartupMessage);\n\tpi.on(\"session_start\", async (_event, context) => {\n\t\tif (context.mode !== \"tui\") return;\n\t\tcontext.ui.setHeader((_tui, theme) => ({\n\t\t\trender(width) {\n\t\t\t\treturn renderSpStartupHeader(theme, width, context.model?.id, readSpGatewayState() !== undefined);\n\t\t\t},\n\t\t\tinvalidate() {},\n\t\t}));\n\t});\n}\n"]}
@@ -11,11 +11,15 @@ export function renderSpStartupHeader(theme, width, modelId, gatewayConnected =
11
11
  const availableWidth = Math.max(1, width);
12
12
  const truncateLine = (line) => truncateToWidth(line, availableWidth);
13
13
  const status = `sp-gateway: ${gatewayConnected ? "connected" : "not configured"} · model: ${modelId ?? "not selected"}`;
14
+ const loginPrompt = gatewayConnected
15
+ ? []
16
+ : [truncateLine(theme.bold(theme.fg("warning", "Not logged in. Run /login to continue.")))];
14
17
  const commands = "/login · /model · /onboarding · /btw";
15
18
  if (availableWidth < 68) {
16
19
  return [
17
20
  truncateLine(theme.bold(theme.fg("accent", "LLM IN A BOX")) + theme.fg("dim", " · powered by Senpiper")),
18
21
  truncateLine(theme.fg("muted", status)),
22
+ ...loginPrompt,
19
23
  truncateLine(theme.fg("dim", commands)),
20
24
  ];
21
25
  }
@@ -23,10 +27,15 @@ export function renderSpStartupHeader(theme, width, modelId, gatewayConnected =
23
27
  ...LLM_IN_A_BOX_BANNER.map((line) => truncateLine(theme.bold(theme.fg("accent", line)))),
24
28
  truncateLine(theme.fg("dim", "powered by Senpiper")),
25
29
  truncateLine(theme.fg("muted", status)),
30
+ ...loginPrompt,
26
31
  truncateLine(theme.fg("dim", commands)),
27
32
  ];
28
33
  }
34
+ export function filterSpStartupMessage(startupMessage) {
35
+ return startupMessage.type === "no-model" ? undefined : startupMessage.message;
36
+ }
29
37
  export function registerSpStartupHeader(pi) {
38
+ pi.registerStartupMessageFilter(filterSpStartupMessage);
30
39
  pi.on("session_start", async (_event, context) => {
31
40
  if (context.mode !== "tui")
32
41
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"startup-header.js","sourceRoot":"","sources":["../src/startup-header.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,mBAAmB,GAAG;IAC3B,gEAAgE;IAChE,sEAAsE;IACtE,oEAAoE;IACpE,mEAAmE;IACnE,sEAAsE;CACtE,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,KAAY,EAAE,KAAa,EAAE,OAAgB,EAAE,gBAAgB,GAAG,KAAK,EAAE;IAC9G,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,eAAe,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,cAAa,OAAO,IAAI,cAAc,EAAE,CAAC;IACxH,MAAM,QAAQ,GAAG,yCAAsC,CAAC;IAExD,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;QACzB,OAAO;YACN,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAwB,CAAC,CAAC;YACxG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACvC,CAAC;IACH,CAAC;IAED,OAAO;QACN,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACxF,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACpD,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KACvC,CAAC;AAAA,CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,EAAgB,EAAE;IACzD,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO;QACnC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,EAAE;gBACb,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,SAAS,CAAC,CAAC;YAAA,CAClG;YACD,UAAU,GAAG,EAAC,CAAC;SACf,CAAC,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;AAAA,CACH","sourcesContent":["import type { ExtensionAPI, Theme } from \"@senpiper/pi-coding-agent\";\nimport { truncateToWidth } from \"@senpiper/pi-coding-agent/runtime-deps\";\nimport { readSpGatewayState } from \"./gateway.ts\";\n\nconst LLM_IN_A_BOX_BANNER = [\n\t\" _ _ __ __ ___ _ _ _ ____ ___ __ __\",\n\t\"| | | | | \\\\/ | |_ _| \\\\ | | / \\\\ | __ ) / _ \\\\ \\\\ \\\\/ /\",\n\t\"| | | | | |\\\\/| | | || \\\\| | / _ \\\\ | _ \\\\| | | | \\\\ /\",\n\t\"| |___| |___| | | | | || |\\\\ | / ___ \\\\ | |_) | |_| | / \\\\ \",\n\t\"|_____|_____|_| |_| |___|_| \\\\_| /_/ \\\\_\\\\ |____/ \\\\___/ /_/\\\\_\\\\\",\n];\n\nexport function renderSpStartupHeader(theme: Theme, width: number, modelId?: string, gatewayConnected = false) {\n\tconst availableWidth = Math.max(1, width);\n\tconst truncateLine = (line: string) => truncateToWidth(line, availableWidth);\n\tconst status = `sp-gateway: ${gatewayConnected ? \"connected\" : \"not configured\"} · model: ${modelId ?? \"not selected\"}`;\n\tconst commands = \"/login · /model · /onboarding · /btw\";\n\n\tif (availableWidth < 68) {\n\t\treturn [\n\t\t\ttruncateLine(theme.bold(theme.fg(\"accent\", \"LLM IN A BOX\")) + theme.fg(\"dim\", \" · powered by Senpiper\")),\n\t\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t\t];\n\t}\n\n\treturn [\n\t\t...LLM_IN_A_BOX_BANNER.map((line) => truncateLine(theme.bold(theme.fg(\"accent\", line)))),\n\t\ttruncateLine(theme.fg(\"dim\", \"powered by Senpiper\")),\n\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t];\n}\n\nexport function registerSpStartupHeader(pi: ExtensionAPI) {\n\tpi.on(\"session_start\", async (_event, context) => {\n\t\tif (context.mode !== \"tui\") return;\n\t\tcontext.ui.setHeader((_tui, theme) => ({\n\t\t\trender(width) {\n\t\t\t\treturn renderSpStartupHeader(theme, width, context.model?.id, readSpGatewayState() !== undefined);\n\t\t\t},\n\t\t\tinvalidate() {},\n\t\t}));\n\t});\n}\n"]}
1
+ {"version":3,"file":"startup-header.js","sourceRoot":"","sources":["../src/startup-header.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExtensionAPI, StartupMessage, Theme } from \"@senpiper/pi-coding-agent\";\nimport { truncateToWidth } from \"@senpiper/pi-coding-agent/runtime-deps\";\nimport { readSpGatewayState } from \"./gateway.ts\";\n\nconst LLM_IN_A_BOX_BANNER = [\n\t\" _ _ __ __ ___ _ _ _ ____ ___ __ __\",\n\t\"| | | | | \\\\/ | |_ _| \\\\ | | / \\\\ | __ ) / _ \\\\ \\\\ \\\\/ /\",\n\t\"| | | | | |\\\\/| | | || \\\\| | / _ \\\\ | _ \\\\| | | | \\\\ /\",\n\t\"| |___| |___| | | | | || |\\\\ | / ___ \\\\ | |_) | |_| | / \\\\ \",\n\t\"|_____|_____|_| |_| |___|_| \\\\_| /_/ \\\\_\\\\ |____/ \\\\___/ /_/\\\\_\\\\\",\n];\n\nexport function renderSpStartupHeader(theme: Theme, width: number, modelId?: string, gatewayConnected = false) {\n\tconst availableWidth = Math.max(1, width);\n\tconst truncateLine = (line: string) => truncateToWidth(line, availableWidth);\n\tconst status = `sp-gateway: ${gatewayConnected ? \"connected\" : \"not configured\"} · model: ${modelId ?? \"not selected\"}`;\n\tconst loginPrompt = gatewayConnected\n\t\t? []\n\t\t: [truncateLine(theme.bold(theme.fg(\"warning\", \"Not logged in. Run /login to continue.\")))];\n\tconst commands = \"/login · /model · /onboarding · /btw\";\n\n\tif (availableWidth < 68) {\n\t\treturn [\n\t\t\ttruncateLine(theme.bold(theme.fg(\"accent\", \"LLM IN A BOX\")) + theme.fg(\"dim\", \" · powered by Senpiper\")),\n\t\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\t\t...loginPrompt,\n\t\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t\t];\n\t}\n\n\treturn [\n\t\t...LLM_IN_A_BOX_BANNER.map((line) => truncateLine(theme.bold(theme.fg(\"accent\", line)))),\n\t\ttruncateLine(theme.fg(\"dim\", \"powered by Senpiper\")),\n\t\ttruncateLine(theme.fg(\"muted\", status)),\n\t\t...loginPrompt,\n\t\ttruncateLine(theme.fg(\"dim\", commands)),\n\t];\n}\n\nexport function filterSpStartupMessage(startupMessage: StartupMessage) {\n\treturn startupMessage.type === \"no-model\" ? undefined : startupMessage.message;\n}\n\nexport function registerSpStartupHeader(pi: ExtensionAPI) {\n\tpi.registerStartupMessageFilter(filterSpStartupMessage);\n\tpi.on(\"session_start\", async (_event, context) => {\n\t\tif (context.mode !== \"tui\") return;\n\t\tcontext.ui.setHeader((_tui, theme) => ({\n\t\t\trender(width) {\n\t\t\t\treturn renderSpStartupHeader(theme, width, context.model?.id, readSpGatewayState() !== undefined);\n\t\t\t},\n\t\t\tinvalidate() {},\n\t\t}));\n\t});\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@senpiper/sp-agent",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Policy-bound Senpiper distribution of Pi",
5
5
  "type": "module",
6
6
  "piConfig": {