@corners/cli 0.0.5 → 0.0.7

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.
@@ -0,0 +1,182 @@
1
+ /**
2
+ * MCP serve mode for the Corners CLI.
3
+ * Runs an MCP server over stdio exposing agent communication tools.
4
+ * Any MCP-compatible agent configures: "command": "corners", "args": ["mcp", "serve"]
5
+ */
6
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
+ import { z } from "zod";
9
+ import { toGraphQLWorkstreamUpdateType } from "./support.js";
10
+ const RECORD_WORKSTREAM_UPDATE_MUTATION = `
11
+ mutation McpRecordWorkstreamUpdate($input: RecordWorkstreamUpdateInput!) {
12
+ recordWorkstreamUpdate(input: $input) {
13
+ id
14
+ eventType
15
+ payload
16
+ createdAt
17
+ }
18
+ }
19
+ `;
20
+ export async function runMcpServer(client) {
21
+ const server = new McpServer({
22
+ name: "corners-agent",
23
+ version: "1.0.0",
24
+ description: "Agent communication tools for Corners workstreams. Post checkpoints, declare intent, and manage agent sessions.",
25
+ });
26
+ server.tool("agent_session_start", "Signal that an agent session has started working on a task. Posts a session_start event to the workstream.", {
27
+ workstreamId: z.string().describe("Workstream ID to post to"),
28
+ intent: z
29
+ .string()
30
+ .optional()
31
+ .describe("What the agent intends to work on"),
32
+ agentType: z
33
+ .string()
34
+ .optional()
35
+ .describe("Agent type (e.g. claude-code, codex, cursor)"),
36
+ }, async ({ workstreamId, intent, agentType }) => {
37
+ const result = await client.graphql(RECORD_WORKSTREAM_UPDATE_MUTATION, {
38
+ input: {
39
+ workstreamId,
40
+ updateType: toGraphQLWorkstreamUpdateType("session_start"),
41
+ content: intent ?? "Agent session started",
42
+ ...(agentType ? { agentType } : {}),
43
+ },
44
+ });
45
+ return {
46
+ content: [
47
+ {
48
+ type: "text",
49
+ text: JSON.stringify({
50
+ success: true,
51
+ messageId: result.recordWorkstreamUpdate.id,
52
+ workstreamId,
53
+ type: "session_start",
54
+ }),
55
+ },
56
+ ],
57
+ };
58
+ });
59
+ server.tool("agent_checkpoint", "Post a progress checkpoint to a workstream. Use at natural breakpoints in agent work.", {
60
+ workstreamId: z.string().describe("Workstream ID to post to"),
61
+ message: z.string().describe("Checkpoint message describing progress"),
62
+ filesTouched: z
63
+ .array(z.string())
64
+ .optional()
65
+ .describe("File paths touched during this work"),
66
+ agentType: z
67
+ .string()
68
+ .optional()
69
+ .describe("Agent type (e.g. claude-code, codex, cursor)"),
70
+ }, async ({ workstreamId, message, filesTouched, agentType }) => {
71
+ const result = await client.graphql(RECORD_WORKSTREAM_UPDATE_MUTATION, {
72
+ input: {
73
+ workstreamId,
74
+ updateType: toGraphQLWorkstreamUpdateType("checkpoint"),
75
+ content: message,
76
+ ...(agentType ? { agentType } : {}),
77
+ ...(filesTouched?.length ? { filesTouched } : {}),
78
+ },
79
+ });
80
+ return {
81
+ content: [
82
+ {
83
+ type: "text",
84
+ text: JSON.stringify({
85
+ success: true,
86
+ messageId: result.recordWorkstreamUpdate.id,
87
+ workstreamId,
88
+ type: "checkpoint",
89
+ }),
90
+ },
91
+ ],
92
+ };
93
+ });
94
+ server.tool("agent_intent_declare", "Declare what scope the agent is working on. Used for visibility and future overlap detection.", {
95
+ workstreamId: z.string().describe("Workstream ID to post to"),
96
+ scope: z
97
+ .string()
98
+ .describe("Description of the scope (e.g. 'auth module refactor')"),
99
+ files: z
100
+ .array(z.string())
101
+ .optional()
102
+ .describe("File paths in scope"),
103
+ agentType: z
104
+ .string()
105
+ .optional()
106
+ .describe("Agent type (e.g. claude-code, codex, cursor)"),
107
+ }, async ({ workstreamId, scope, files, agentType }) => {
108
+ const result = await client.graphql(RECORD_WORKSTREAM_UPDATE_MUTATION, {
109
+ input: {
110
+ workstreamId,
111
+ updateType: toGraphQLWorkstreamUpdateType("intent"),
112
+ content: scope,
113
+ scope,
114
+ ...(agentType ? { agentType } : {}),
115
+ ...(files?.length ? { filesTouched: files } : {}),
116
+ },
117
+ });
118
+ return {
119
+ content: [
120
+ {
121
+ type: "text",
122
+ text: JSON.stringify({
123
+ success: true,
124
+ messageId: result.recordWorkstreamUpdate.id,
125
+ workstreamId,
126
+ type: "intent",
127
+ }),
128
+ },
129
+ ],
130
+ };
131
+ });
132
+ server.tool("agent_session_end", "Signal that an agent session has finished. Posts a session_end event with a summary.", {
133
+ workstreamId: z.string().describe("Workstream ID to post to"),
134
+ summary: z
135
+ .string()
136
+ .optional()
137
+ .describe("Summary of what was accomplished"),
138
+ filesTouched: z
139
+ .array(z.string())
140
+ .optional()
141
+ .describe("Aggregate file paths touched during the session"),
142
+ agentType: z
143
+ .string()
144
+ .optional()
145
+ .describe("Agent type (e.g. claude-code, codex, cursor)"),
146
+ }, async ({ workstreamId, summary, filesTouched, agentType }) => {
147
+ const result = await client.graphql(RECORD_WORKSTREAM_UPDATE_MUTATION, {
148
+ input: {
149
+ workstreamId,
150
+ updateType: toGraphQLWorkstreamUpdateType("session_end"),
151
+ content: summary ?? "Agent session ended",
152
+ ...(agentType ? { agentType } : {}),
153
+ ...(filesTouched?.length ? { filesTouched } : {}),
154
+ },
155
+ });
156
+ return {
157
+ content: [
158
+ {
159
+ type: "text",
160
+ text: JSON.stringify({
161
+ success: true,
162
+ messageId: result.recordWorkstreamUpdate.id,
163
+ workstreamId,
164
+ type: "session_end",
165
+ }),
166
+ },
167
+ ],
168
+ };
169
+ });
170
+ const transport = new StdioServerTransport();
171
+ await server.connect(transport);
172
+ // Keep process alive until disconnected
173
+ process.on("SIGINT", async () => {
174
+ await server.close();
175
+ process.exit(0);
176
+ });
177
+ process.on("SIGTERM", async () => {
178
+ await server.close();
179
+ process.exit(0);
180
+ });
181
+ }
182
+ //# sourceMappingURL=mcp-serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-serve.js","sourceRoot":"","sources":["../src/mcp-serve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,iCAAiC,GAAG;;;;;;;;;CASzC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAwB;IACzD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,iHAAiH;KACpH,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,4GAA4G,EAC5G;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7D,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,mCAAmC,CAAC;QAChD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAEhC,iCAAiC,EAAE;YACpC,KAAK,EAAE;gBACL,YAAY;gBACZ,UAAU,EAAE,6BAA6B,CAAC,eAAe,CAAC;gBAC1D,OAAO,EAAE,MAAM,IAAI,uBAAuB;gBAC1C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpC;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE;wBAC3C,YAAY;wBACZ,IAAI,EAAE,eAAe;qBACtB,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,uFAAuF,EACvF;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACtE,YAAY,EAAE,CAAC;aACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,qCAAqC,CAAC;QAClD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAEhC,iCAAiC,EAAE;YACpC,KAAK,EAAE;gBACL,YAAY;gBACZ,UAAU,EAAE,6BAA6B,CAAC,YAAY,CAAC;gBACvD,OAAO,EAAE,OAAO;gBAChB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE;wBAC3C,YAAY;wBACZ,IAAI,EAAE,YAAY;qBACnB,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,+FAA+F,EAC/F;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7D,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CAAC,wDAAwD,CAAC;QACrE,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,qBAAqB,CAAC;QAClC,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAEhC,iCAAiC,EAAE;YACpC,KAAK,EAAE;gBACL,YAAY;gBACZ,UAAU,EAAE,6BAA6B,CAAC,QAAQ,CAAC;gBACnD,OAAO,EAAE,KAAK;gBACd,KAAK;gBACL,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE;wBAC3C,YAAY;wBACZ,IAAI,EAAE,QAAQ;qBACf,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,sFAAsF,EACtF;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7D,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,kCAAkC,CAAC;QAC/C,YAAY,EAAE,CAAC;aACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAEhC,iCAAiC,EAAE;YACpC,KAAK,EAAE;gBACL,YAAY;gBACZ,UAAU,EAAE,6BAA6B,CAAC,aAAa,CAAC;gBACxD,OAAO,EAAE,OAAO,IAAI,qBAAqB;gBACzC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE;wBAC3C,YAAY;wBACZ,IAAI,EAAE,aAAa;qBACpB,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Skill management for Corners CLI.
3
+ * Handles bundled skill discovery, installation, auto-sync, and state resolution.
4
+ */
5
+ import type { InstalledSkillReference, LocalRootConfig } from "./config.js";
6
+ import { type PlannedEdit } from "./support.js";
7
+ export interface SkillDefinition {
8
+ name: string;
9
+ dirName: string;
10
+ fileName: string;
11
+ }
12
+ export declare const BUNDLED_SKILLS: SkillDefinition[];
13
+ export interface SkillFrontmatter {
14
+ name: string;
15
+ version: string;
16
+ description: string;
17
+ }
18
+ export type SkillFileState = "current" | "stale" | "missing";
19
+ export interface SkillStatus {
20
+ name: string;
21
+ state: SkillFileState;
22
+ installedVersion: string | null;
23
+ bundledVersion: string;
24
+ installedPath: string;
25
+ }
26
+ export interface SkillsState {
27
+ stale: boolean;
28
+ lastSyncedAt: string | null;
29
+ skills: SkillStatus[];
30
+ }
31
+ export declare function getBundledSkillsDir(): string;
32
+ export declare function getBundledSkillPath(skill: SkillDefinition): string;
33
+ export declare function getInstalledSkillPath(rootDir: string, skill: SkillDefinition): string;
34
+ export declare function parseSkillFrontmatter(content: string): SkillFrontmatter | null;
35
+ export declare function computeSkillHash(content: string): string;
36
+ export declare function resolveSkillsState(rootDir: string, config: LocalRootConfig): Promise<SkillsState>;
37
+ export declare function buildSkillPlannedEdits(rootDir: string): Promise<PlannedEdit[]>;
38
+ export declare function buildInstalledSkillReferences(syncedAt: string): Promise<InstalledSkillReference[]>;
39
+ export declare function withUpdatedSkillsConfig(config: LocalRootConfig, installedSkills: InstalledSkillReference[], syncedAt: string): LocalRootConfig;
40
+ export declare function syncSkillsIfNeeded(rootDir: string, config: LocalRootConfig, writeConfig: (rootDir: string, config: LocalRootConfig) => Promise<void>): Promise<void>;
41
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,eAAe,EAK3C,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAElE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,eAAe,GACrB,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GACd,gBAAgB,GAAG,IAAI,CAoCzB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,WAAW,CAAC,CAmDtB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAaxB;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAepC;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,uBAAuB,EAAE,EAC1C,QAAQ,EAAE,MAAM,GACf,eAAe,CAQjB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GACvE,OAAO,CAAC,IAAI,CAAC,CAgBf"}
package/dist/skills.js ADDED
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Skill management for Corners CLI.
3
+ * Handles bundled skill discovery, installation, auto-sync, and state resolution.
4
+ */
5
+ import { createHash } from "node:crypto";
6
+ import { readFile } from "node:fs/promises";
7
+ import { join } from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+ import { buildPlannedEdit, readOptionalUtf8, writePlannedEdits, } from "./support.js";
10
+ export const BUNDLED_SKILLS = [
11
+ { name: "corners-ask", dirName: "corners-ask", fileName: "SKILL.md" },
12
+ { name: "corners-plan", dirName: "corners-plan", fileName: "SKILL.md" },
13
+ { name: "corners-push", dirName: "corners-push", fileName: "SKILL.md" },
14
+ { name: "corners-sync", dirName: "corners-sync", fileName: "SKILL.md" },
15
+ ];
16
+ export function getBundledSkillsDir() {
17
+ return fileURLToPath(new URL("../skills", import.meta.url));
18
+ }
19
+ export function getBundledSkillPath(skill) {
20
+ return join(getBundledSkillsDir(), skill.dirName, skill.fileName);
21
+ }
22
+ export function getInstalledSkillPath(rootDir, skill) {
23
+ return join(rootDir, ".claude", "skills", skill.dirName, skill.fileName);
24
+ }
25
+ export function parseSkillFrontmatter(content) {
26
+ const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
27
+ if (!match) {
28
+ return null;
29
+ }
30
+ const block = match[1];
31
+ const nameMatch = block.match(/^name:\s*(.+)$/m);
32
+ const versionMatch = block.match(/^version:\s*(.+)$/m);
33
+ if (!nameMatch || !versionMatch) {
34
+ return null;
35
+ }
36
+ let description = "";
37
+ const descBlockMatch = block.match(/^description:\s*\|\s*\r?\n([\s\S]*?)(?=\n[a-z][\w-]*:|\s*$)/m);
38
+ if (descBlockMatch) {
39
+ description = descBlockMatch[1]
40
+ .split(/\r?\n/)
41
+ .map((line) => line.replace(/^ {2}/, "").trim())
42
+ .filter(Boolean)
43
+ .join(" ");
44
+ }
45
+ else {
46
+ const descInlineMatch = block.match(/^description:\s*(.+)$/m);
47
+ if (descInlineMatch) {
48
+ description = descInlineMatch[1].trim();
49
+ }
50
+ }
51
+ return {
52
+ name: nameMatch[1].trim(),
53
+ version: versionMatch[1].trim(),
54
+ description,
55
+ };
56
+ }
57
+ export function computeSkillHash(content) {
58
+ return createHash("sha256")
59
+ .update(content, "utf8")
60
+ .digest("hex")
61
+ .slice(0, 16);
62
+ }
63
+ export async function resolveSkillsState(rootDir, config) {
64
+ const skills = [];
65
+ let hasStale = false;
66
+ for (const skill of BUNDLED_SKILLS) {
67
+ const bundledContent = await readFile(getBundledSkillPath(skill), "utf8");
68
+ const bundledFrontmatter = parseSkillFrontmatter(bundledContent);
69
+ const installedPath = getInstalledSkillPath(rootDir, skill);
70
+ const installedContent = await readOptionalUtf8(installedPath);
71
+ if (installedContent === null) {
72
+ hasStale = true;
73
+ skills.push({
74
+ name: skill.name,
75
+ state: "missing",
76
+ installedVersion: null,
77
+ bundledVersion: bundledFrontmatter?.version ?? "unknown",
78
+ installedPath,
79
+ });
80
+ continue;
81
+ }
82
+ const bundledHash = computeSkillHash(bundledContent);
83
+ const installedHash = computeSkillHash(installedContent);
84
+ const installedFrontmatter = parseSkillFrontmatter(installedContent);
85
+ if (bundledHash === installedHash) {
86
+ skills.push({
87
+ name: skill.name,
88
+ state: "current",
89
+ installedVersion: installedFrontmatter?.version ?? "unknown",
90
+ bundledVersion: bundledFrontmatter?.version ?? "unknown",
91
+ installedPath,
92
+ });
93
+ }
94
+ else {
95
+ hasStale = true;
96
+ skills.push({
97
+ name: skill.name,
98
+ state: "stale",
99
+ installedVersion: installedFrontmatter?.version ?? "unknown",
100
+ bundledVersion: bundledFrontmatter?.version ?? "unknown",
101
+ installedPath,
102
+ });
103
+ }
104
+ }
105
+ return {
106
+ stale: hasStale,
107
+ lastSyncedAt: config.skills?.syncedAt ?? null,
108
+ skills,
109
+ };
110
+ }
111
+ export async function buildSkillPlannedEdits(rootDir) {
112
+ const edits = [];
113
+ for (const skill of BUNDLED_SKILLS) {
114
+ const bundledContent = await readFile(getBundledSkillPath(skill), "utf8");
115
+ const installedPath = getInstalledSkillPath(rootDir, skill);
116
+ const edit = await buildPlannedEdit(installedPath, bundledContent);
117
+ if (edit) {
118
+ edits.push(edit);
119
+ }
120
+ }
121
+ return edits;
122
+ }
123
+ export async function buildInstalledSkillReferences(syncedAt) {
124
+ const refs = [];
125
+ for (const skill of BUNDLED_SKILLS) {
126
+ const content = await readFile(getBundledSkillPath(skill), "utf8");
127
+ const frontmatter = parseSkillFrontmatter(content);
128
+ refs.push({
129
+ name: skill.name,
130
+ version: frontmatter?.version ?? "unknown",
131
+ contentHash: computeSkillHash(content),
132
+ installedAt: syncedAt,
133
+ });
134
+ }
135
+ return refs;
136
+ }
137
+ export function withUpdatedSkillsConfig(config, installedSkills, syncedAt) {
138
+ return {
139
+ ...config,
140
+ skills: {
141
+ installedSkills,
142
+ syncedAt,
143
+ },
144
+ };
145
+ }
146
+ export async function syncSkillsIfNeeded(rootDir, config, writeConfig) {
147
+ if (!config.skills) {
148
+ return;
149
+ }
150
+ const edits = await buildSkillPlannedEdits(rootDir);
151
+ if (edits.length === 0) {
152
+ return;
153
+ }
154
+ await writePlannedEdits(edits);
155
+ const syncedAt = new Date().toISOString();
156
+ const refs = await buildInstalledSkillReferences(syncedAt);
157
+ const nextConfig = withUpdatedSkillsConfig(config, refs, syncedAt);
158
+ await writeConfig(rootDir, nextConfig);
159
+ }
160
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
package/dist/support.d.ts CHANGED
@@ -19,4 +19,12 @@ export declare function toGraphQLWorkstreamStatus(value: string): string;
19
19
  export declare function toGraphQLAttachmentKind(value: string): string;
20
20
  export declare function toIsoString(value?: Date): string;
21
21
  export declare function sleep(ms: number): Promise<void>;
22
+ export type PlannedEdit = {
23
+ path: string;
24
+ action: "create" | "update";
25
+ content: string;
26
+ };
27
+ export declare function readOptionalUtf8(path: string): Promise<string | null>;
28
+ export declare function buildPlannedEdit(path: string, nextContent: string): Promise<PlannedEdit | null>;
29
+ export declare function writePlannedEdits(edits: PlannedEdit[]): Promise<void>;
22
30
  //# sourceMappingURL=support.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../src/support.ts"],"names":[],"mappings":"AAKA,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB;CAQJ;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQ7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAW1C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAE7E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5E;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,CAAC,cAAc,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBpE;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAenE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB/D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB7D;AAED,wBAAgB,WAAW,CAAC,KAAK,GAAE,IAAiB,GAAG,MAAM,CAE5D;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/C"}
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../src/support.ts"],"names":[],"mappings":"AAOA,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB;CAQJ;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQ7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAW1C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAE7E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5E;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,CAAC,cAAc,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBpE;AAaD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAuBnE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB/D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoB7D;AAED,wBAAgB,WAAW,CAAC,KAAK,GAAE,IAAiB,GAAG,MAAM,CAE5D;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/C;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS3E;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAW7B;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E"}
package/dist/support.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { readFileSync } from "node:fs";
3
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
4
+ import { dirname } from "node:path";
3
5
  let cachedVersion = null;
4
6
  export class CLIError extends Error {
5
7
  exitCode;
@@ -65,6 +67,16 @@ export async function openUrlInBrowser(url) {
65
67
  return false;
66
68
  }
67
69
  }
70
+ const VALID_UPDATE_TYPES = [
71
+ "status",
72
+ "blocker",
73
+ "learning",
74
+ "outcome",
75
+ "session_start",
76
+ "checkpoint",
77
+ "intent",
78
+ "session_end",
79
+ ];
68
80
  export function toGraphQLWorkstreamUpdateType(value) {
69
81
  switch (value.trim().toLowerCase()) {
70
82
  case "status":
@@ -75,8 +87,16 @@ export function toGraphQLWorkstreamUpdateType(value) {
75
87
  return "LEARNING";
76
88
  case "outcome":
77
89
  return "OUTCOME";
90
+ case "session_start":
91
+ return "SESSION_START";
92
+ case "checkpoint":
93
+ return "CHECKPOINT";
94
+ case "intent":
95
+ return "INTENT";
96
+ case "session_end":
97
+ return "SESSION_END";
78
98
  default:
79
- throw new CLIError(`Invalid update type: ${value}. Expected status, blocker, learning, or outcome.`);
99
+ throw new CLIError(`Invalid update type: ${value}. Valid types: ${VALID_UPDATE_TYPES.join(", ")}`);
80
100
  }
81
101
  }
82
102
  export function toGraphQLWorkstreamStatus(value) {
@@ -105,8 +125,12 @@ export function toGraphQLAttachmentKind(value) {
105
125
  case "calendar-event":
106
126
  case "calendar_event":
107
127
  return "CALENDAR_EVENT";
128
+ case "todolist":
129
+ case "todo_list":
130
+ case "todo-list":
131
+ return "TODOLIST";
108
132
  default:
109
- throw new CLIError(`Invalid attachment kind: ${value}. Expected thread, document, datatable, or calendar_event.`);
133
+ throw new CLIError(`Invalid attachment kind: ${value}. Expected thread, document, datatable, calendar_event, or todolist.`);
110
134
  }
111
135
  }
112
136
  export function toIsoString(value = new Date()) {
@@ -117,4 +141,32 @@ export function sleep(ms) {
117
141
  setTimeout(resolve, ms);
118
142
  });
119
143
  }
144
+ export async function readOptionalUtf8(path) {
145
+ try {
146
+ return await readFile(path, "utf8");
147
+ }
148
+ catch (error) {
149
+ if (error.code === "ENOENT") {
150
+ return null;
151
+ }
152
+ throw error;
153
+ }
154
+ }
155
+ export async function buildPlannedEdit(path, nextContent) {
156
+ const existing = await readOptionalUtf8(path);
157
+ if (existing === nextContent) {
158
+ return null;
159
+ }
160
+ return {
161
+ path,
162
+ action: existing === null ? "create" : "update",
163
+ content: nextContent,
164
+ };
165
+ }
166
+ export async function writePlannedEdits(edits) {
167
+ for (const edit of edits) {
168
+ await mkdir(dirname(edit.path), { recursive: true });
169
+ await writeFile(edit.path, edit.content, "utf8");
170
+ }
171
+ }
120
172
  //# sourceMappingURL=support.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../src/support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAS;IACjB,IAAI,CAAgB;IACpB,IAAI,CAAU;IAEvB,YACE,OAAe,EACf,OAIC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,MAAM,QAAQ,GACZ,KAAK,EAAE,IAAI,EAAE;QACb,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE;QAC/B,qBAAqB,CAAC;IACxB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAElE,CAAC;IACF,aAAa,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IAC/C,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAA6B,EAAE,KAAc;IACrE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAA6B,EAAE,KAAa;IACpE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA4B;IAE5B,IAAK,KAA2B,CAAC,KAAK,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAa;IACzD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB;YACE,MAAM,IAAI,QAAQ,CAChB,wBAAwB,KAAK,mDAAmD,CACjF,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,MAAM,IAAI,QAAQ,CAChB,8BAA8B,KAAK,oDAAoD,CACxF,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,CAAC;QAC1B;YACE,MAAM,IAAI,QAAQ,CAChB,4BAA4B,KAAK,4DAA4D,CAC9F,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAc,IAAI,IAAI,EAAE;IAClD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../src/support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAS;IACjB,IAAI,CAAgB;IACpB,IAAI,CAAU;IAEvB,YACE,OAAe,EACf,OAIC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,MAAM,QAAQ,GACZ,KAAK,EAAE,IAAI,EAAE;QACb,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE;QAC/B,qBAAqB,CAAC;IACxB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAElE,CAAC;IACF,aAAa,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IAC/C,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAA6B,EAAE,KAAc;IACrE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAA6B,EAAE,KAAa;IACpE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA4B;IAE5B,IAAK,KAA2B,CAAC,KAAK,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG;IACzB,QAAQ;IACR,SAAS;IACT,UAAU;IACV,SAAS;IACT,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,aAAa;CACL,CAAC;AAEX,MAAM,UAAU,6BAA6B,CAAC,KAAa;IACzD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe;YAClB,OAAO,eAAe,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB;YACE,MAAM,IAAI,QAAQ,CAChB,wBAAwB,KAAK,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/E,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,MAAM,IAAI,QAAQ,CAChB,8BAA8B,KAAK,oDAAoD,CACxF,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,CAAC;QAC1B,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,UAAU,CAAC;QACpB;YACE,MAAM,IAAI,QAAQ,CAChB,4BAA4B,KAAK,sEAAsE,CACxG,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAc,IAAI,IAAI,EAAE;IAClD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QAC/C,OAAO,EAAE,WAAW;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAoB;IAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corners/cli",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -9,7 +9,8 @@
9
9
  "corners": "./dist/index.js"
10
10
  },
11
11
  "files": [
12
- "dist"
12
+ "dist",
13
+ "skills"
13
14
  ],
14
15
  "publishConfig": {
15
16
  "access": "public"
@@ -25,6 +26,9 @@
25
26
  "typecheck": "tsc --noEmit",
26
27
  "test": "vitest run"
27
28
  },
29
+ "dependencies": {
30
+ "@modelcontextprotocol/sdk": "catalog:"
31
+ },
28
32
  "devDependencies": {
29
33
  "@biomejs/biome": "catalog:",
30
34
  "@types/node": "catalog:",