@gyomu/ai-compiler 0.2.4-beta.5

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 (67) hide show
  1. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.d.ts +2 -0
  2. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.d.ts.map +1 -0
  3. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.js +67 -0
  4. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.js.map +1 -0
  5. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.test.d.ts +2 -0
  6. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.test.d.ts.map +1 -0
  7. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.test.js +60 -0
  8. package/dist/pipelines/jsdoc-update/__sit__/documentable-child-members.test.js.map +1 -0
  9. package/dist/pipelines/jsdoc-update/__sit__/existing-jsdoc.test.d.ts +2 -0
  10. package/dist/pipelines/jsdoc-update/__sit__/existing-jsdoc.test.d.ts.map +1 -0
  11. package/dist/pipelines/jsdoc-update/__sit__/existing-jsdoc.test.js +175 -0
  12. package/dist/pipelines/jsdoc-update/__sit__/existing-jsdoc.test.js.map +1 -0
  13. package/dist/pipelines/jsdoc-update/__sit__/simple-function.test.d.ts +2 -0
  14. package/dist/pipelines/jsdoc-update/__sit__/simple-function.test.d.ts.map +1 -0
  15. package/dist/pipelines/jsdoc-update/__sit__/simple-function.test.js +108 -0
  16. package/dist/pipelines/jsdoc-update/__sit__/simple-function.test.js.map +1 -0
  17. package/dist/pipelines/jsdoc-update/context/JsDocUpdateContext.d.ts +156 -0
  18. package/dist/pipelines/jsdoc-update/context/JsDocUpdateContext.d.ts.map +1 -0
  19. package/dist/pipelines/jsdoc-update/context/JsDocUpdateContext.js +2 -0
  20. package/dist/pipelines/jsdoc-update/context/JsDocUpdateContext.js.map +1 -0
  21. package/dist/pipelines/jsdoc-update/context/TsDocFileContext.d.ts +16 -0
  22. package/dist/pipelines/jsdoc-update/context/TsDocFileContext.d.ts.map +1 -0
  23. package/dist/pipelines/jsdoc-update/context/TsDocFileContext.js +2 -0
  24. package/dist/pipelines/jsdoc-update/context/TsDocFileContext.js.map +1 -0
  25. package/dist/pipelines/jsdoc-update/context/TsDocSymbolContext.d.ts +164 -0
  26. package/dist/pipelines/jsdoc-update/context/TsDocSymbolContext.d.ts.map +1 -0
  27. package/dist/pipelines/jsdoc-update/context/TsDocSymbolContext.js +2 -0
  28. package/dist/pipelines/jsdoc-update/context/TsDocSymbolContext.js.map +1 -0
  29. package/dist/pipelines/jsdoc-update/executor/__tests__/executeJsDocUpdatePlan.test.d.ts +2 -0
  30. package/dist/pipelines/jsdoc-update/executor/__tests__/executeJsDocUpdatePlan.test.d.ts.map +1 -0
  31. package/dist/pipelines/jsdoc-update/executor/__tests__/executeJsDocUpdatePlan.test.js +47 -0
  32. package/dist/pipelines/jsdoc-update/executor/__tests__/executeJsDocUpdatePlan.test.js.map +1 -0
  33. package/dist/pipelines/jsdoc-update/executor/executeJsDocUpdatePlan.d.ts +9 -0
  34. package/dist/pipelines/jsdoc-update/executor/executeJsDocUpdatePlan.d.ts.map +1 -0
  35. package/dist/pipelines/jsdoc-update/executor/executeJsDocUpdatePlan.js +30 -0
  36. package/dist/pipelines/jsdoc-update/executor/executeJsDocUpdatePlan.js.map +1 -0
  37. package/dist/pipelines/jsdoc-update/index.d.ts +6 -0
  38. package/dist/pipelines/jsdoc-update/index.d.ts.map +1 -0
  39. package/dist/pipelines/jsdoc-update/index.js +3 -0
  40. package/dist/pipelines/jsdoc-update/index.js.map +1 -0
  41. package/dist/pipelines/jsdoc-update/mode/ComplexityStrategy.d.ts +6 -0
  42. package/dist/pipelines/jsdoc-update/mode/ComplexityStrategy.d.ts.map +1 -0
  43. package/dist/pipelines/jsdoc-update/mode/ComplexityStrategy.js +4 -0
  44. package/dist/pipelines/jsdoc-update/mode/ComplexityStrategy.js.map +1 -0
  45. package/dist/pipelines/jsdoc-update/mode/ModeContext.d.ts +15 -0
  46. package/dist/pipelines/jsdoc-update/mode/ModeContext.d.ts.map +1 -0
  47. package/dist/pipelines/jsdoc-update/mode/ModeContext.js +2 -0
  48. package/dist/pipelines/jsdoc-update/mode/ModeContext.js.map +1 -0
  49. package/dist/pipelines/jsdoc-update/mode/index.d.ts +4 -0
  50. package/dist/pipelines/jsdoc-update/mode/index.d.ts.map +1 -0
  51. package/dist/pipelines/jsdoc-update/mode/index.js +4 -0
  52. package/dist/pipelines/jsdoc-update/mode/index.js.map +1 -0
  53. package/dist/pipelines/jsdoc-update/mode/modeResolver.d.ts +4 -0
  54. package/dist/pipelines/jsdoc-update/mode/modeResolver.d.ts.map +1 -0
  55. package/dist/pipelines/jsdoc-update/mode/modeResolver.js +12 -0
  56. package/dist/pipelines/jsdoc-update/mode/modeResolver.js.map +1 -0
  57. package/dist/pipelines/jsdoc-update/prompt/loadPrompt.d.ts +4 -0
  58. package/dist/pipelines/jsdoc-update/prompt/loadPrompt.d.ts.map +1 -0
  59. package/dist/pipelines/jsdoc-update/prompt/loadPrompt.js +7 -0
  60. package/dist/pipelines/jsdoc-update/prompt/loadPrompt.js.map +1 -0
  61. package/dist/pipelines/jsdoc-update/prompt/tsdoc-update-base.md +174 -0
  62. package/dist/pipelines/jsdoc-update/prompt/tsdoc-update-deep.md +13 -0
  63. package/dist/pipelines/jsdoc-update/schema/JsDocUpdatePlan.d.ts +254 -0
  64. package/dist/pipelines/jsdoc-update/schema/JsDocUpdatePlan.d.ts.map +1 -0
  65. package/dist/pipelines/jsdoc-update/schema/JsDocUpdatePlan.js +151 -0
  66. package/dist/pipelines/jsdoc-update/schema/JsDocUpdatePlan.js.map +1 -0
  67. package/package.json +42 -0
@@ -0,0 +1,2 @@
1
+ import 'dotenv/config';
2
+ //# sourceMappingURL=documentable-child-members.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentable-child-members.d.ts","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/documentable-child-members.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAA"}
@@ -0,0 +1,67 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { Layer } from 'effect';
3
+ import { ConfigLayer, MainLayer, PlatformLayer } from '@gyomu/infra';
4
+ import { VercelAiModelServiceLive } from '@gyomu/ai/provider/vercel';
5
+ import { makeRunner } from '@gyomu/schema/effect';
6
+ import { executeJsDocUpdatePlan } from '../executor/executeJsDocUpdatePlan.js';
7
+ import 'dotenv/config';
8
+ const describeIfApiKey = process.env.GEMINI_API_KEY ? describe : describe.skip;
9
+ const layer = Layer.provideMerge(MainLayer, ConfigLayer).pipe(Layer.provideMerge(PlatformLayer));
10
+ const runQAWithEnvOrThrow = makeRunner(VercelAiModelServiceLive);
11
+ describeIfApiKey('executeJsDocUpdatePlan integration', () => {
12
+ test('generates plans for documentable child members', async () => {
13
+ const context = {
14
+ project: { name: 'simple test' },
15
+ source: { relativePath: 'test/user.ts' },
16
+ // mode: 'light',
17
+ symbols: [
18
+ {
19
+ target: {
20
+ symbolId: 'User',
21
+ signatureId: 'interface',
22
+ },
23
+ symbol: {
24
+ name: 'User',
25
+ kind: 'interface',
26
+ },
27
+ code: {
28
+ snippet: `
29
+ export interface User {
30
+ id: string
31
+ }
32
+ `,
33
+ },
34
+ existingJsDoc: {
35
+ summary: 'User information.',
36
+ params: [],
37
+ tags: [],
38
+ },
39
+ effectSignals: undefined,
40
+ children: [
41
+ {
42
+ target: {
43
+ symbolId: 'User.id',
44
+ signatureId: 'property',
45
+ },
46
+ name: 'id',
47
+ kind: 'property',
48
+ existingJsDoc: {
49
+ summary: 'User identifier.',
50
+ params: [],
51
+ tags: [],
52
+ },
53
+ effectSignals: undefined,
54
+ },
55
+ ],
56
+ relatedSymbols: [],
57
+ },
58
+ ],
59
+ };
60
+ const plan = await runQAWithEnvOrThrow(executeJsDocUpdatePlan(context), layer);
61
+ console.dir(plan, { depth: null });
62
+ expect(plan.length).toBeGreaterThanOrEqual(2);
63
+ expect(plan.some((p) => p.identity.symbolId === 'User')).toBe(true);
64
+ expect(plan.some((p) => p.identity.symbolId === 'User.id')).toBe(true);
65
+ }, 60_000);
66
+ });
67
+ //# sourceMappingURL=documentable-child-members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentable-child-members.js","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/documentable-child-members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,eAAe,CAAA;AAGtB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;AAE9E,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAA;AAChG,MAAM,mBAAmB,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAA;AAEhE,gBAAgB,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC1D,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAqB;YAChC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;YAChC,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE;YAExC,iBAAiB;YAEjB,OAAO,EAAE;gBACP;oBACE,MAAM,EAAE;wBACN,QAAQ,EAAE,MAAM;wBAChB,WAAW,EAAE,WAAW;qBACzB;oBAED,MAAM,EAAE;wBACN,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW;qBAClB;oBAED,IAAI,EAAE;wBACJ,OAAO,EAAE;;;;CAIpB;qBACU;oBAED,aAAa,EAAE;wBACb,OAAO,EAAE,mBAAmB;wBAC5B,MAAM,EAAE,EAAE;wBACV,IAAI,EAAE,EAAE;qBACT;oBACD,aAAa,EAAE,SAAS;oBACxB,QAAQ,EAAE;wBACR;4BACE,MAAM,EAAE;gCACN,QAAQ,EAAE,SAAS;gCACnB,WAAW,EAAE,UAAU;6BACxB;4BAED,IAAI,EAAE,IAAI;4BACV,IAAI,EAAE,UAAU;4BAEhB,aAAa,EAAE;gCACb,OAAO,EAAE,kBAAkB;gCAC3B,MAAM,EAAE,EAAE;gCACV,IAAI,EAAE,EAAE;6BACT;4BACD,aAAa,EAAE,SAAS;yBACzB;qBACF;oBAED,cAAc,EAAE,EAAE;iBACnB;aACF;SACF,CAAA;QAED,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA;QAE9E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAElC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;QAE7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC,EAAE,MAAM,CAAC,CAAA;AACZ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import 'dotenv/config';
2
+ //# sourceMappingURL=documentable-child-members.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentable-child-members.test.d.ts","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/documentable-child-members.test.ts"],"names":[],"mappings":"AAKA,OAAO,eAAe,CAAA"}
@@ -0,0 +1,60 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { Layer } from 'effect';
3
+ import { ConfigLayer, MainLayer, PlatformLayer, makeRunner } from '@gyomu/infra';
4
+ import { VercelAiModelServiceLive } from '@gyomu/ai/provider/vercel';
5
+ import { executeJsDocUpdatePlan } from '../executor/executeJsDocUpdatePlan.js';
6
+ import 'dotenv/config';
7
+ const describeIfApiKey = process.env.GEMINI_API_KEY ? describe : describe.skip;
8
+ const layer = Layer.provideMerge(MainLayer, ConfigLayer).pipe(Layer.provideMerge(PlatformLayer));
9
+ const runQAWithEnvOrThrow = makeRunner(VercelAiModelServiceLive);
10
+ describeIfApiKey('executeJsDocUpdatePlan integration', () => {
11
+ test('generates plans for documentable child members', async () => {
12
+ const context = {
13
+ project: { name: 'simple test' },
14
+ source: { relativePath: 'test/user.ts' },
15
+ mode: 'light',
16
+ target: {
17
+ symbolId: 'User',
18
+ signatureId: 'interface',
19
+ },
20
+ symbol: {
21
+ name: 'User',
22
+ kind: 'interface',
23
+ },
24
+ code: {
25
+ snippet: `
26
+ export interface User {
27
+ id: string
28
+ }
29
+ `,
30
+ },
31
+ existingJsDoc: {
32
+ summary: 'User information.',
33
+ params: [],
34
+ tags: [],
35
+ },
36
+ children: [
37
+ {
38
+ id: 'User.id',
39
+ name: 'id',
40
+ kind: 'property',
41
+ existingJsDoc: {
42
+ summary: 'User identifier.',
43
+ params: [],
44
+ tags: [],
45
+ },
46
+ },
47
+ ],
48
+ relatedSymbols: [],
49
+ options: {
50
+ preserveStyle: true,
51
+ },
52
+ };
53
+ const plan = await runQAWithEnvOrThrow(executeJsDocUpdatePlan(context), layer);
54
+ console.dir(plan, { depth: null });
55
+ expect(plan.length).toBeGreaterThanOrEqual(2);
56
+ expect(plan.some((p) => p.identity.symbolId === 'User')).toBe(true);
57
+ expect(plan.some((p) => p.identity.symbolId === 'User.id')).toBe(true);
58
+ }, 60_000);
59
+ });
60
+ //# sourceMappingURL=documentable-child-members.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentable-child-members.test.js","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/documentable-child-members.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,eAAe,CAAA;AAGtB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;AAE9E,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAA;AAChG,MAAM,mBAAmB,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAA;AAEhE,gBAAgB,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC1D,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAsB;YACjC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;YAChC,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE;YAExC,IAAI,EAAE,OAAO;YAEb,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM;gBAChB,WAAW,EAAE,WAAW;aACzB;YAED,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,WAAW;aAClB;YAED,IAAI,EAAE;gBACJ,OAAO,EAAE;;;;CAIhB;aACM;YAED,aAAa,EAAE;gBACb,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;aACT;YAED,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,SAAS;oBAEb,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,UAAU;oBAEhB,aAAa,EAAE;wBACb,OAAO,EAAE,kBAAkB;wBAC3B,MAAM,EAAE,EAAE;wBACV,IAAI,EAAE,EAAE;qBACT;iBACF;aACF;YAED,cAAc,EAAE,EAAE;YAElB,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI;aACpB;SACF,CAAA;QAED,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA;QAE9E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAElC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;QAE7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC,EAAE,MAAM,CAAC,CAAA;AACZ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import 'dotenv/config';
2
+ //# sourceMappingURL=existing-jsdoc.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"existing-jsdoc.test.d.ts","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/existing-jsdoc.test.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAA"}
@@ -0,0 +1,175 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { Layer } from 'effect';
3
+ import { ConfigLayer, MainLayer, PlatformLayer } from '@gyomu/infra';
4
+ import { makeRunner } from '@gyomu/schema/effect';
5
+ import { VercelAiModelServiceLive } from '@gyomu/ai/provider/vercel';
6
+ import { executeJsDocUpdatePlan } from '../executor/executeJsDocUpdatePlan.js';
7
+ import 'dotenv/config';
8
+ const describeIfApiKey = process.env.GEMINI_API_KEY ? describe : describe.skip;
9
+ const layer = Layer.provideMerge(MainLayer, ConfigLayer).pipe(Layer.provideMerge(PlatformLayer));
10
+ const runQAWithEnvOrThrow = makeRunner(VercelAiModelServiceLive);
11
+ describeIfApiKey('executeJsDocUpdatePlan integration', () => {
12
+ test('prefers preserve when existing documentation already exists', async () => {
13
+ const context = {
14
+ project: { name: 'simple test' },
15
+ source: { relativePath: 'test/existing-jsdoc.ts' },
16
+ // mode: 'light',
17
+ symbols: [
18
+ {
19
+ target: {
20
+ signatureId: '(a: number, b: number) => number',
21
+ symbolId: 'add',
22
+ },
23
+ symbol: {
24
+ name: 'add',
25
+ kind: 'function',
26
+ },
27
+ relatedSymbols: [],
28
+ code: {
29
+ // declarationSnippet: `
30
+ // export const add = (
31
+ // a: number,
32
+ // b: number,
33
+ // ): number
34
+ // `,
35
+ snippet: 'return a + b',
36
+ },
37
+ existingJsDoc: {
38
+ summary: 'Adds two numbers.',
39
+ params: [
40
+ {
41
+ name: 'a',
42
+ type: 'number',
43
+ description: 'The first number.',
44
+ sortOrder: 1,
45
+ },
46
+ {
47
+ name: 'b',
48
+ type: 'number',
49
+ description: 'The second number.',
50
+ sortOrder: 2,
51
+ },
52
+ ],
53
+ returns: 'The sum of the two numbers.',
54
+ tags: [],
55
+ },
56
+ effectSignals: undefined,
57
+ },
58
+ ],
59
+ };
60
+ const plan = await runQAWithEnvOrThrow(executeJsDocUpdatePlan(context), layer);
61
+ console.dir(plan, { depth: null });
62
+ expect(plan[0]?.summary.action.type).toBe('preserve');
63
+ expect(plan[0]?.params.every((p) => p.action.type === 'preserve')).toBe(true);
64
+ expect(plan[0]?.returns.action.type).toBe('preserve');
65
+ }, 60_000);
66
+ test('slightly different jsdoc expects replacement in summary', async () => {
67
+ const context = {
68
+ project: { name: 'simple test' },
69
+ source: { relativePath: 'test/existing-jsdoc.ts' },
70
+ // mode: 'light',
71
+ symbols: [
72
+ {
73
+ target: {
74
+ signatureId: '(a: number, b: number) => number',
75
+ symbolId: 'add',
76
+ },
77
+ symbol: {
78
+ name: 'add',
79
+ kind: 'function',
80
+ },
81
+ relatedSymbols: [],
82
+ code: {
83
+ // declarationSnippet: `
84
+ // export const add = (
85
+ // a: number,
86
+ // b: number,
87
+ // ): number
88
+ // `,
89
+ snippet: 'return a + b',
90
+ },
91
+ existingJsDoc: {
92
+ summary: 'Adds three numbers.',
93
+ params: [
94
+ {
95
+ name: 'a',
96
+ type: 'number',
97
+ description: 'The first number.',
98
+ sortOrder: 1,
99
+ },
100
+ {
101
+ name: 'b',
102
+ type: 'number',
103
+ description: 'The second number.',
104
+ sortOrder: 2,
105
+ },
106
+ ],
107
+ returns: 'The sum of the two numbers.',
108
+ tags: [],
109
+ },
110
+ effectSignals: undefined,
111
+ },
112
+ ],
113
+ };
114
+ const plan = await runQAWithEnvOrThrow(executeJsDocUpdatePlan(context), layer);
115
+ console.dir(plan, { depth: null });
116
+ expect(plan[0]?.summary.action.type).toBe('replace');
117
+ expect(plan[0]?.params.every((p) => p.action.type === 'preserve')).toBe(true);
118
+ expect(plan[0]?.returns.action.type).toBe('preserve');
119
+ }, 60_000);
120
+ test('deletes parameter documentation for removed parameter', async () => {
121
+ const context = {
122
+ project: { name: 'simple test' },
123
+ source: { relativePath: 'test/existing-jsdoc.ts' },
124
+ // mode: 'light',
125
+ symbols: [
126
+ {
127
+ target: {
128
+ signatureId: '(a: number, b: number) => number',
129
+ symbolId: 'add',
130
+ },
131
+ symbol: {
132
+ name: 'add',
133
+ kind: 'function',
134
+ },
135
+ relatedSymbols: [],
136
+ code: {
137
+ snippet: 'return a + b',
138
+ },
139
+ existingJsDoc: {
140
+ summary: 'Adds two numbers.',
141
+ params: [
142
+ {
143
+ name: 'a',
144
+ type: 'number',
145
+ description: 'The first number.',
146
+ sortOrder: 1,
147
+ },
148
+ {
149
+ name: 'b',
150
+ type: 'number',
151
+ description: 'The second number.',
152
+ sortOrder: 2,
153
+ },
154
+ {
155
+ name: 'removedParam',
156
+ type: 'number',
157
+ description: 'No longer exists.',
158
+ sortOrder: 3,
159
+ },
160
+ ],
161
+ returns: 'The sum of the two numbers.',
162
+ tags: [],
163
+ },
164
+ effectSignals: undefined,
165
+ },
166
+ ],
167
+ };
168
+ const plan = await runQAWithEnvOrThrow(executeJsDocUpdatePlan(context), layer);
169
+ console.dir(plan, { depth: null });
170
+ const removedParamPlan = plan[0]?.params.find((p) => p.name === 'removedParam');
171
+ expect(removedParamPlan).toBeDefined();
172
+ expect(removedParamPlan?.action.type).toBe('delete');
173
+ }, 60_000);
174
+ });
175
+ //# sourceMappingURL=existing-jsdoc.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"existing-jsdoc.test.js","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/existing-jsdoc.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import 'dotenv/config';
2
+ //# sourceMappingURL=simple-function.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-function.test.d.ts","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/simple-function.test.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAA"}
@@ -0,0 +1,108 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { Layer } from 'effect';
3
+ import { ConfigLayer, MainLayer, PlatformLayer } from '@gyomu/infra';
4
+ import { VercelAiModelServiceLive } from '@gyomu/ai/provider/vercel';
5
+ import { makeRunner } from '@gyomu/schema/effect';
6
+ import { executeJsDocUpdatePlan } from '../executor/executeJsDocUpdatePlan.js';
7
+ import 'dotenv/config';
8
+ const describeIfApiKey = process.env.GEMINI_API_KEY ? describe : describe.skip;
9
+ const layer = Layer.provideMerge(MainLayer, ConfigLayer).pipe(Layer.provideMerge(PlatformLayer));
10
+ const runQAWithEnvOrThrow = makeRunner(VercelAiModelServiceLive);
11
+ describeIfApiKey('executeJsDocUpdatePlan integration', () => {
12
+ test('generates update plan for simple function', async () => {
13
+ const context = {
14
+ project: { name: 'simple test' },
15
+ source: { relativePath: 'test/simple-func.ts' },
16
+ // mode: 'light',
17
+ symbols: [
18
+ {
19
+ target: {
20
+ signatureId: '(a: number, b: number) => number',
21
+ symbolId: 'add',
22
+ },
23
+ symbol: {
24
+ name: 'add',
25
+ kind: 'function',
26
+ },
27
+ relatedSymbols: [],
28
+ code: {
29
+ // declarationSnippet: `
30
+ // export const add = (
31
+ // a: number,
32
+ // b: number,
33
+ // ): number
34
+ // `,
35
+ snippet: 'return a + b',
36
+ },
37
+ existingJsDoc: {
38
+ params: [],
39
+ tags: [],
40
+ },
41
+ effectSignals: undefined,
42
+ },
43
+ ],
44
+ };
45
+ const plan = await runQAWithEnvOrThrow(executeJsDocUpdatePlan(context), layer);
46
+ console.dir(plan, { depth: null });
47
+ expect(plan[0]?.summary).toBeDefined();
48
+ expect(plan[0]?.params.length).toBe(2);
49
+ expect(plan[0]?.params.some((p) => p.name === 'a')).toBe(true);
50
+ expect(plan[0]?.params.some((p) => p.name === 'b')).toBe(true);
51
+ expect(plan[0]?.risk).toBeDefined();
52
+ }, 60_000);
53
+ test('prefers preserve when existing documentation already exists', async () => {
54
+ const context = {
55
+ project: { name: 'simple test' },
56
+ source: { relativePath: 'test/existing-jsdoc.ts' },
57
+ // mode: 'light',
58
+ symbols: [
59
+ {
60
+ target: {
61
+ signatureId: '(a: number, b: number) => number',
62
+ symbolId: 'add',
63
+ },
64
+ symbol: {
65
+ name: 'add',
66
+ kind: 'function',
67
+ },
68
+ relatedSymbols: [],
69
+ code: {
70
+ // declarationSnippet: `
71
+ // export const add = (
72
+ // a: number,
73
+ // b: number,
74
+ // ): number
75
+ // `,
76
+ snippet: 'return a + b',
77
+ },
78
+ existingJsDoc: {
79
+ summary: 'Adds two numbers.',
80
+ params: [
81
+ {
82
+ name: 'a',
83
+ type: 'number',
84
+ description: 'The first number.',
85
+ sortOrder: 1,
86
+ },
87
+ {
88
+ name: 'b',
89
+ type: 'number',
90
+ description: 'The second number.',
91
+ sortOrder: 2,
92
+ },
93
+ ],
94
+ returns: 'The sum of the two numbers.',
95
+ tags: [],
96
+ },
97
+ effectSignals: undefined,
98
+ },
99
+ ],
100
+ };
101
+ const plan = await runQAWithEnvOrThrow(executeJsDocUpdatePlan(context), layer);
102
+ console.dir(plan, { depth: null });
103
+ expect(plan[0]?.summary.action.type).toBe('preserve');
104
+ expect(plan[0]?.params.every((p) => p.action.type === 'preserve')).toBe(true);
105
+ expect(plan[0]?.returns.action.type).toBe('preserve');
106
+ }, 60_000);
107
+ });
108
+ //# sourceMappingURL=simple-function.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-function.test.js","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/__sit__/simple-function.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ import type { SymbolIdentity } from '@gyomu/schema/schemas/typescript/index';
2
+ import type { EffectSignals } from '@gyomu/schema/typescript';
3
+ /**
4
+ * Defines the base interface for a JSDoc update context containing project metadata and target identification.
5
+ */
6
+ export interface TsDocSymbolContext {
7
+ /**
8
+ * The specific symbol identity targeted for the JSDoc update.
9
+ */
10
+ target: SymbolIdentity;
11
+ /**
12
+ * The metadata of the targeted symbol.
13
+ */
14
+ symbol: {
15
+ name: string;
16
+ kind: string;
17
+ };
18
+ /**
19
+ * Container for the code snippet information.
20
+ */
21
+ code: {
22
+ snippet?: string;
23
+ };
24
+ /**
25
+ * Optional existing JSDoc documentation for the target symbol.
26
+ */
27
+ existingJsDoc?: ExistingJsDoc;
28
+ /**
29
+ * The optional effect type declaration
30
+ */
31
+ effectSignals: Pick<EffectSignals, 'success' | 'error' | 'requirements'> | undefined;
32
+ /**
33
+ * List of related symbols to be documented.
34
+ */
35
+ relatedSymbols: Array<RelatedSymbol>;
36
+ /**
37
+ * List of documentable child members.
38
+ */
39
+ children?: Array<ContextEntry>;
40
+ /**
41
+ * Deep analysis metadata for code refinement.
42
+ */
43
+ analysis?: {
44
+ paramSemantics: Array<{
45
+ name: string;
46
+ meaning: string;
47
+ role: string;
48
+ }>;
49
+ protectedRegions: Array<ProtectedSection>;
50
+ returnSemantics?: string;
51
+ sideEffects: Array<string>;
52
+ schemaStructure?: SchemaStructureNode;
53
+ };
54
+ /**
55
+ * Configuration and metrics regarding how the symbol is used.
56
+ */
57
+ usageContext?: {
58
+ publicApi: boolean;
59
+ usedAcrossModules: boolean;
60
+ callSites?: number;
61
+ };
62
+ }
63
+ /**
64
+ * Represents an entry in the JSDoc update context, defining a target symbol and its associated metadata.
65
+ */
66
+ export interface ContextEntry {
67
+ /**
68
+ * The target symbol identity to be documented.
69
+ */
70
+ target: SymbolIdentity;
71
+ /**
72
+ * The name of the symbol.
73
+ */
74
+ name: string;
75
+ /**
76
+ * The category of the symbol.
77
+ */
78
+ kind: 'property' | 'method' | 'parameter' | 'type';
79
+ /**
80
+ * The optional type definition of the symbol.
81
+ */
82
+ type?: string;
83
+ /**
84
+ * Existing JSDoc content associated with the symbol, if any.
85
+ */
86
+ existingJsDoc?: ExistingJsDoc;
87
+ /**
88
+ * The optional effect type declaration
89
+ */
90
+ effectSignals: Pick<EffectSignals, 'success' | 'error' | 'requirements'> | undefined;
91
+ /**
92
+ * Child entries nested under this symbol.
93
+ */
94
+ children?: Array<ContextEntry>;
95
+ }
96
+ /**
97
+ * Represents the existing JSDoc documentation structure for a symbol.
98
+ */
99
+ export interface ExistingJsDoc {
100
+ /**
101
+ * The JSDoc summary text, if present.
102
+ */
103
+ summary?: string;
104
+ /**
105
+ * An array of parameter documentation entries.
106
+ */
107
+ params: Array<{
108
+ name: string;
109
+ sortOrder: number;
110
+ type?: string;
111
+ description?: string;
112
+ }>;
113
+ /**
114
+ * The return value documentation, if present.
115
+ */
116
+ returns?: string;
117
+ /**
118
+ * An array of additional JSDoc tags.
119
+ */
120
+ tags: Array<{
121
+ tag: string;
122
+ content: string;
123
+ sortOrder: number;
124
+ }>;
125
+ }
126
+ interface RelatedSymbol {
127
+ name: string;
128
+ kind: string;
129
+ signature: string;
130
+ }
131
+ export interface SchemaStructureNode {
132
+ name: string;
133
+ kind: 'property' | 'object' | 'array' | 'union' | 'primitive' | 'reference' | 'literal';
134
+ type?: string;
135
+ semanticHint?: string;
136
+ children?: Array<SchemaStructureNode>;
137
+ }
138
+ /**
139
+ * Represents a section of code or documentation that should be protected from automatic modification.
140
+ */
141
+ export interface ProtectedSection {
142
+ /**
143
+ * The type of section being protected.
144
+ */
145
+ kind: 'summary' | 'param' | 'returns' | 'tag';
146
+ /**
147
+ * Optional identifier for the section.
148
+ */
149
+ key?: string;
150
+ /**
151
+ * The reason why the section is protected.
152
+ */
153
+ reason: 'preserve-marker' | 'human-edited' | 'custom-content';
154
+ }
155
+ export {};
156
+ //# sourceMappingURL=JsDocUpdateContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsDocUpdateContext.d.ts","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/context/JsDocUpdateContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JsDocUpdateContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsDocUpdateContext.js","sourceRoot":"","sources":["../../../../src/pipelines/jsdoc-update/context/JsDocUpdateContext.ts"],"names":[],"mappings":""}