@astralform/js 8.3.0 → 8.4.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.
package/dist/index.d.cts CHANGED
@@ -756,6 +756,43 @@ interface SkillInfo {
756
756
  description: string;
757
757
  isEnabled: boolean;
758
758
  }
759
+ /**
760
+ * A slash command the active agent offers — the system commands (`/new`,
761
+ * `/goal`, `/plan`, …) followed by its enabled skills, from
762
+ * `GET /v1/skills/commands`.
763
+ *
764
+ * The backend builds this list once and every surface reads it, so the web
765
+ * composer's "/" menu and the Telegram bot's command menu cannot drift.
766
+ */
767
+ interface SlashCommand {
768
+ /** What the user types after the slash, and what the backend parses. */
769
+ name: string;
770
+ /** Human-readable label for the menu row. May be empty. */
771
+ displayName: string;
772
+ /** One line describing what the command does. May be empty. */
773
+ description: string;
774
+ /**
775
+ * The argument shape a row shows after the name, e.g. `"[goal]"`. Empty
776
+ * when the command takes none — never undefined, so a renderer can
777
+ * concatenate it without a guard.
778
+ */
779
+ argsHint: string;
780
+ /**
781
+ * Which surfaces can run this command (`"web"`, `"telegram"`).
782
+ *
783
+ * Always populated, whatever surface was asked for — a scoped list has
784
+ * already filtered on it, so every row there names at least the surface
785
+ * requested. It carries information only for `"all"`, where rows that
786
+ * cannot run everywhere sit next to rows that can. Empty rather than
787
+ * undefined for the same reason as `argsHint`.
788
+ */
789
+ surfaces: string[];
790
+ }
791
+ /**
792
+ * Who will execute the commands {@link AstralformClient.listSkillCommands}
793
+ * returns. `"web"` is the server's default: what `POST /v1/jobs` runs itself.
794
+ */
795
+ type SlashCommandSurface = "web" | "telegram" | "all";
759
796
  interface JobCreateResponse {
760
797
  job_id: string;
761
798
  conversation_id: string;
@@ -1467,6 +1504,22 @@ declare class AstralformClient {
1467
1504
  */
1468
1505
  getModels(): Promise<ModelOption[]>;
1469
1506
  getSkills(): Promise<SkillInfo[]>;
1507
+ /**
1508
+ * List the slash commands the active agent offers — the system commands
1509
+ * followed by its enabled skills. Backs the composer's "/" menu.
1510
+ *
1511
+ * @param surface Who will execute them. Omit for the server's default,
1512
+ * `"web"`: what `POST /v1/jobs` runs itself. `"telegram"` returns the
1513
+ * bot's commands under Telegram-valid names; `"all"` returns every
1514
+ * command, including those the other surfaces filter out — `surfaces` is
1515
+ * set on every row either way, and is what tells them apart here.
1516
+ *
1517
+ * The default surface is not sent as a query parameter. The server already
1518
+ * defaults to `web`, so omitting it keeps the request byte-identical to
1519
+ * what clients that call the raw path send today — same reasoning as
1520
+ * {@link getConversationEvents}'s `toolOutputs`.
1521
+ */
1522
+ listSkillCommands(surface?: SlashCommandSurface): Promise<SlashCommand[]>;
1470
1523
  getConversationEvents(conversationId: string, jobId?: string, options?: {
1471
1524
  toolOutputs?: ToolOutputMode;
1472
1525
  }): Promise<ConversationEvent[]>;
@@ -2494,4 +2547,4 @@ declare function isEmbeddedResource(value: unknown): value is {
2494
2547
  */
2495
2548
  declare function parseEmbeddedResource(value: unknown): EmbeddedResource | null;
2496
2549
 
2497
- export { type ActiveJob, type AgentCapability, type AgentIdentity, type AgentInfo, type AgentStatus, type AssetCreatedPayload, type AstralformApiKeyConfig, AstralformClient, type AstralformConfig, AstralformError, type AstralformUserTokenConfig, type AttachmentStagedPayload, AuthenticationError, type AvailableRepositories, type AvailableRepository, type BlockDeltaPayload, CONVERSATION_PAGE_SIZE, type ChatEvent, ChatEventType, type ChatEventTypeValue, ChatSession, type ChatStorage, type ChatStreamEvent, type ChatStreamRequest, type CodeProject, ConnectionError, type ContextUpdatePayload, type ContextWarningPayload, type Conversation, type ConversationAsset, type ConversationEvent, type DesktopStreamPayload, type EffortRung, type EmbeddedResource, type FeedbackRequest, type FeedbackResponse, InMemoryStorage, type JobCreateResponse, type JobStatus, type JobSummary, LLMNotConfiguredError, type MemoryProviderErrorPayload, type MemoryRecallPayload, type MemoryRecord, type MemoryUpdatePayload, type Message, type ModelChoiceOptions, type ModelOption, type MyToolGrantsPage, type NestedLlmUsagePayload, type NoteUpdatePayload, type PlanUpdatePayload, type PromptSuggestionPayload, type ProtocolAdapter, ProtocolRegistry, RateLimitError, type RateLimitErrorDetails, type RawSseEvent, type ReasoningEffort, type SendOptions, ServerError, type SkillInfo, StreamAbortedError, type StreamJobSSEOptions, StreamManager, type StreamManagerEvent, type StreamState, type SubagentStartPayload, type SubagentStopPayload, type TaskStatus, type TeamAgentSummary, type TeamSummary, type ThinkingDescriptor, type ThinkingRungOption, type TitleGeneratedPayload, type TodoItem, type TodoUpdatePayload, type ToolApprovalDecision, type ToolApprovalGrantedPayload, type ToolApprovalRequest, type ToolApprovalRequestedPayload, type ToolApprovalScope, type ToolCallRequest, type ToolDefinition, type ToolGrant, type ToolHandler, type ToolHarnessWarningPayload, type ToolOutputMode, type ToolOutputStub, type ToolPermissionDeniedPayload, type ToolProgressPayload, ToolRegistry, type ToolResult, type ToolResultRequest, type TurnUsage, type UIComponentsConfig, type UserUnavailablePayload, VOICE_POLISH_MODES, type VoiceConfig, type VoiceLLMMode, type VoicePolishEvent, type VoicePolishMode, type VoicePolishRequest, type VoiceTranscribeOptions, type VoiceTranscript, type WireBlockDelta, type WireBlockDeltaPayload, type WireBlockKind, type WireBlockStart, type WireBlockStatus, type WireBlockStop, type WireCustomEvent, type WireErrorEvent, type WireEvent, type WireInputArgDelta, type WireInputDelta, type WireKeepalive, type WireMessageStart, type WireMessageStop, type WireOutputDelta, type WireRetryEvent, type WireSignatureDelta, type WireStallWarning, type WireStatusDelta, type WireStopReason, type WireTextDelta, type WireThinkingDelta, type WorkspaceReadyPayload, generateId, isEmbeddedResource, isToolOutputStub, isVoiceLLMMode, isVoicePolishMode, mapSseToChat, parseEmbeddedResource, parseVoicePolishFrame, replayEvents, streamJobSSE, translateDelta };
2550
+ export { type ActiveJob, type AgentCapability, type AgentIdentity, type AgentInfo, type AgentStatus, type AssetCreatedPayload, type AstralformApiKeyConfig, AstralformClient, type AstralformConfig, AstralformError, type AstralformUserTokenConfig, type AttachmentStagedPayload, AuthenticationError, type AvailableRepositories, type AvailableRepository, type BlockDeltaPayload, CONVERSATION_PAGE_SIZE, type ChatEvent, ChatEventType, type ChatEventTypeValue, ChatSession, type ChatStorage, type ChatStreamEvent, type ChatStreamRequest, type CodeProject, ConnectionError, type ContextUpdatePayload, type ContextWarningPayload, type Conversation, type ConversationAsset, type ConversationEvent, type DesktopStreamPayload, type EffortRung, type EmbeddedResource, type FeedbackRequest, type FeedbackResponse, InMemoryStorage, type JobCreateResponse, type JobStatus, type JobSummary, LLMNotConfiguredError, type MemoryProviderErrorPayload, type MemoryRecallPayload, type MemoryRecord, type MemoryUpdatePayload, type Message, type ModelChoiceOptions, type ModelOption, type MyToolGrantsPage, type NestedLlmUsagePayload, type NoteUpdatePayload, type PlanUpdatePayload, type PromptSuggestionPayload, type ProtocolAdapter, ProtocolRegistry, RateLimitError, type RateLimitErrorDetails, type RawSseEvent, type ReasoningEffort, type SendOptions, ServerError, type SkillInfo, type SlashCommand, type SlashCommandSurface, StreamAbortedError, type StreamJobSSEOptions, StreamManager, type StreamManagerEvent, type StreamState, type SubagentStartPayload, type SubagentStopPayload, type TaskStatus, type TeamAgentSummary, type TeamSummary, type ThinkingDescriptor, type ThinkingRungOption, type TitleGeneratedPayload, type TodoItem, type TodoUpdatePayload, type ToolApprovalDecision, type ToolApprovalGrantedPayload, type ToolApprovalRequest, type ToolApprovalRequestedPayload, type ToolApprovalScope, type ToolCallRequest, type ToolDefinition, type ToolGrant, type ToolHandler, type ToolHarnessWarningPayload, type ToolOutputMode, type ToolOutputStub, type ToolPermissionDeniedPayload, type ToolProgressPayload, ToolRegistry, type ToolResult, type ToolResultRequest, type TurnUsage, type UIComponentsConfig, type UserUnavailablePayload, VOICE_POLISH_MODES, type VoiceConfig, type VoiceLLMMode, type VoicePolishEvent, type VoicePolishMode, type VoicePolishRequest, type VoiceTranscribeOptions, type VoiceTranscript, type WireBlockDelta, type WireBlockDeltaPayload, type WireBlockKind, type WireBlockStart, type WireBlockStatus, type WireBlockStop, type WireCustomEvent, type WireErrorEvent, type WireEvent, type WireInputArgDelta, type WireInputDelta, type WireKeepalive, type WireMessageStart, type WireMessageStop, type WireOutputDelta, type WireRetryEvent, type WireSignatureDelta, type WireStallWarning, type WireStatusDelta, type WireStopReason, type WireTextDelta, type WireThinkingDelta, type WorkspaceReadyPayload, generateId, isEmbeddedResource, isToolOutputStub, isVoiceLLMMode, isVoicePolishMode, mapSseToChat, parseEmbeddedResource, parseVoicePolishFrame, replayEvents, streamJobSSE, translateDelta };
package/dist/index.d.ts CHANGED
@@ -756,6 +756,43 @@ interface SkillInfo {
756
756
  description: string;
757
757
  isEnabled: boolean;
758
758
  }
759
+ /**
760
+ * A slash command the active agent offers — the system commands (`/new`,
761
+ * `/goal`, `/plan`, …) followed by its enabled skills, from
762
+ * `GET /v1/skills/commands`.
763
+ *
764
+ * The backend builds this list once and every surface reads it, so the web
765
+ * composer's "/" menu and the Telegram bot's command menu cannot drift.
766
+ */
767
+ interface SlashCommand {
768
+ /** What the user types after the slash, and what the backend parses. */
769
+ name: string;
770
+ /** Human-readable label for the menu row. May be empty. */
771
+ displayName: string;
772
+ /** One line describing what the command does. May be empty. */
773
+ description: string;
774
+ /**
775
+ * The argument shape a row shows after the name, e.g. `"[goal]"`. Empty
776
+ * when the command takes none — never undefined, so a renderer can
777
+ * concatenate it without a guard.
778
+ */
779
+ argsHint: string;
780
+ /**
781
+ * Which surfaces can run this command (`"web"`, `"telegram"`).
782
+ *
783
+ * Always populated, whatever surface was asked for — a scoped list has
784
+ * already filtered on it, so every row there names at least the surface
785
+ * requested. It carries information only for `"all"`, where rows that
786
+ * cannot run everywhere sit next to rows that can. Empty rather than
787
+ * undefined for the same reason as `argsHint`.
788
+ */
789
+ surfaces: string[];
790
+ }
791
+ /**
792
+ * Who will execute the commands {@link AstralformClient.listSkillCommands}
793
+ * returns. `"web"` is the server's default: what `POST /v1/jobs` runs itself.
794
+ */
795
+ type SlashCommandSurface = "web" | "telegram" | "all";
759
796
  interface JobCreateResponse {
760
797
  job_id: string;
761
798
  conversation_id: string;
@@ -1467,6 +1504,22 @@ declare class AstralformClient {
1467
1504
  */
1468
1505
  getModels(): Promise<ModelOption[]>;
1469
1506
  getSkills(): Promise<SkillInfo[]>;
1507
+ /**
1508
+ * List the slash commands the active agent offers — the system commands
1509
+ * followed by its enabled skills. Backs the composer's "/" menu.
1510
+ *
1511
+ * @param surface Who will execute them. Omit for the server's default,
1512
+ * `"web"`: what `POST /v1/jobs` runs itself. `"telegram"` returns the
1513
+ * bot's commands under Telegram-valid names; `"all"` returns every
1514
+ * command, including those the other surfaces filter out — `surfaces` is
1515
+ * set on every row either way, and is what tells them apart here.
1516
+ *
1517
+ * The default surface is not sent as a query parameter. The server already
1518
+ * defaults to `web`, so omitting it keeps the request byte-identical to
1519
+ * what clients that call the raw path send today — same reasoning as
1520
+ * {@link getConversationEvents}'s `toolOutputs`.
1521
+ */
1522
+ listSkillCommands(surface?: SlashCommandSurface): Promise<SlashCommand[]>;
1470
1523
  getConversationEvents(conversationId: string, jobId?: string, options?: {
1471
1524
  toolOutputs?: ToolOutputMode;
1472
1525
  }): Promise<ConversationEvent[]>;
@@ -2494,4 +2547,4 @@ declare function isEmbeddedResource(value: unknown): value is {
2494
2547
  */
2495
2548
  declare function parseEmbeddedResource(value: unknown): EmbeddedResource | null;
2496
2549
 
2497
- export { type ActiveJob, type AgentCapability, type AgentIdentity, type AgentInfo, type AgentStatus, type AssetCreatedPayload, type AstralformApiKeyConfig, AstralformClient, type AstralformConfig, AstralformError, type AstralformUserTokenConfig, type AttachmentStagedPayload, AuthenticationError, type AvailableRepositories, type AvailableRepository, type BlockDeltaPayload, CONVERSATION_PAGE_SIZE, type ChatEvent, ChatEventType, type ChatEventTypeValue, ChatSession, type ChatStorage, type ChatStreamEvent, type ChatStreamRequest, type CodeProject, ConnectionError, type ContextUpdatePayload, type ContextWarningPayload, type Conversation, type ConversationAsset, type ConversationEvent, type DesktopStreamPayload, type EffortRung, type EmbeddedResource, type FeedbackRequest, type FeedbackResponse, InMemoryStorage, type JobCreateResponse, type JobStatus, type JobSummary, LLMNotConfiguredError, type MemoryProviderErrorPayload, type MemoryRecallPayload, type MemoryRecord, type MemoryUpdatePayload, type Message, type ModelChoiceOptions, type ModelOption, type MyToolGrantsPage, type NestedLlmUsagePayload, type NoteUpdatePayload, type PlanUpdatePayload, type PromptSuggestionPayload, type ProtocolAdapter, ProtocolRegistry, RateLimitError, type RateLimitErrorDetails, type RawSseEvent, type ReasoningEffort, type SendOptions, ServerError, type SkillInfo, StreamAbortedError, type StreamJobSSEOptions, StreamManager, type StreamManagerEvent, type StreamState, type SubagentStartPayload, type SubagentStopPayload, type TaskStatus, type TeamAgentSummary, type TeamSummary, type ThinkingDescriptor, type ThinkingRungOption, type TitleGeneratedPayload, type TodoItem, type TodoUpdatePayload, type ToolApprovalDecision, type ToolApprovalGrantedPayload, type ToolApprovalRequest, type ToolApprovalRequestedPayload, type ToolApprovalScope, type ToolCallRequest, type ToolDefinition, type ToolGrant, type ToolHandler, type ToolHarnessWarningPayload, type ToolOutputMode, type ToolOutputStub, type ToolPermissionDeniedPayload, type ToolProgressPayload, ToolRegistry, type ToolResult, type ToolResultRequest, type TurnUsage, type UIComponentsConfig, type UserUnavailablePayload, VOICE_POLISH_MODES, type VoiceConfig, type VoiceLLMMode, type VoicePolishEvent, type VoicePolishMode, type VoicePolishRequest, type VoiceTranscribeOptions, type VoiceTranscript, type WireBlockDelta, type WireBlockDeltaPayload, type WireBlockKind, type WireBlockStart, type WireBlockStatus, type WireBlockStop, type WireCustomEvent, type WireErrorEvent, type WireEvent, type WireInputArgDelta, type WireInputDelta, type WireKeepalive, type WireMessageStart, type WireMessageStop, type WireOutputDelta, type WireRetryEvent, type WireSignatureDelta, type WireStallWarning, type WireStatusDelta, type WireStopReason, type WireTextDelta, type WireThinkingDelta, type WorkspaceReadyPayload, generateId, isEmbeddedResource, isToolOutputStub, isVoiceLLMMode, isVoicePolishMode, mapSseToChat, parseEmbeddedResource, parseVoicePolishFrame, replayEvents, streamJobSSE, translateDelta };
2550
+ export { type ActiveJob, type AgentCapability, type AgentIdentity, type AgentInfo, type AgentStatus, type AssetCreatedPayload, type AstralformApiKeyConfig, AstralformClient, type AstralformConfig, AstralformError, type AstralformUserTokenConfig, type AttachmentStagedPayload, AuthenticationError, type AvailableRepositories, type AvailableRepository, type BlockDeltaPayload, CONVERSATION_PAGE_SIZE, type ChatEvent, ChatEventType, type ChatEventTypeValue, ChatSession, type ChatStorage, type ChatStreamEvent, type ChatStreamRequest, type CodeProject, ConnectionError, type ContextUpdatePayload, type ContextWarningPayload, type Conversation, type ConversationAsset, type ConversationEvent, type DesktopStreamPayload, type EffortRung, type EmbeddedResource, type FeedbackRequest, type FeedbackResponse, InMemoryStorage, type JobCreateResponse, type JobStatus, type JobSummary, LLMNotConfiguredError, type MemoryProviderErrorPayload, type MemoryRecallPayload, type MemoryRecord, type MemoryUpdatePayload, type Message, type ModelChoiceOptions, type ModelOption, type MyToolGrantsPage, type NestedLlmUsagePayload, type NoteUpdatePayload, type PlanUpdatePayload, type PromptSuggestionPayload, type ProtocolAdapter, ProtocolRegistry, RateLimitError, type RateLimitErrorDetails, type RawSseEvent, type ReasoningEffort, type SendOptions, ServerError, type SkillInfo, type SlashCommand, type SlashCommandSurface, StreamAbortedError, type StreamJobSSEOptions, StreamManager, type StreamManagerEvent, type StreamState, type SubagentStartPayload, type SubagentStopPayload, type TaskStatus, type TeamAgentSummary, type TeamSummary, type ThinkingDescriptor, type ThinkingRungOption, type TitleGeneratedPayload, type TodoItem, type TodoUpdatePayload, type ToolApprovalDecision, type ToolApprovalGrantedPayload, type ToolApprovalRequest, type ToolApprovalRequestedPayload, type ToolApprovalScope, type ToolCallRequest, type ToolDefinition, type ToolGrant, type ToolHandler, type ToolHarnessWarningPayload, type ToolOutputMode, type ToolOutputStub, type ToolPermissionDeniedPayload, type ToolProgressPayload, ToolRegistry, type ToolResult, type ToolResultRequest, type TurnUsage, type UIComponentsConfig, type UserUnavailablePayload, VOICE_POLISH_MODES, type VoiceConfig, type VoiceLLMMode, type VoicePolishEvent, type VoicePolishMode, type VoicePolishRequest, type VoiceTranscribeOptions, type VoiceTranscript, type WireBlockDelta, type WireBlockDeltaPayload, type WireBlockKind, type WireBlockStart, type WireBlockStatus, type WireBlockStop, type WireCustomEvent, type WireErrorEvent, type WireEvent, type WireInputArgDelta, type WireInputDelta, type WireKeepalive, type WireMessageStart, type WireMessageStop, type WireOutputDelta, type WireRetryEvent, type WireSignatureDelta, type WireStallWarning, type WireStatusDelta, type WireStopReason, type WireTextDelta, type WireThinkingDelta, type WorkspaceReadyPayload, generateId, isEmbeddedResource, isToolOutputStub, isVoiceLLMMode, isVoicePolishMode, mapSseToChat, parseEmbeddedResource, parseVoicePolishFrame, replayEvents, streamJobSSE, translateDelta };
package/dist/index.js CHANGED
@@ -803,6 +803,37 @@ var AstralformClient = class {
803
803
  const raw = await this.get("/v1/skills");
804
804
  return raw.map((s) => camelizeKeys(s));
805
805
  }
806
+ /**
807
+ * List the slash commands the active agent offers — the system commands
808
+ * followed by its enabled skills. Backs the composer's "/" menu.
809
+ *
810
+ * @param surface Who will execute them. Omit for the server's default,
811
+ * `"web"`: what `POST /v1/jobs` runs itself. `"telegram"` returns the
812
+ * bot's commands under Telegram-valid names; `"all"` returns every
813
+ * command, including those the other surfaces filter out — `surfaces` is
814
+ * set on every row either way, and is what tells them apart here.
815
+ *
816
+ * The default surface is not sent as a query parameter. The server already
817
+ * defaults to `web`, so omitting it keeps the request byte-identical to
818
+ * what clients that call the raw path send today — same reasoning as
819
+ * {@link getConversationEvents}'s `toolOutputs`.
820
+ */
821
+ async listSkillCommands(surface) {
822
+ const query = surface && surface !== "web" ? `?surface=${surface}` : "";
823
+ const raw = await this.get(
824
+ `/v1/skills/commands${query}`
825
+ );
826
+ return raw.map((c) => {
827
+ const command = camelizeKeys(c);
828
+ return {
829
+ ...command,
830
+ displayName: command.displayName ?? "",
831
+ description: command.description ?? "",
832
+ argsHint: command.argsHint ?? "",
833
+ surfaces: command.surfaces ?? []
834
+ };
835
+ });
836
+ }
806
837
  async getConversationEvents(conversationId, jobId, options) {
807
838
  const params = new URLSearchParams();
808
839
  if (jobId) params.set("job_id", jobId);