@zivis/cli 0.1.0-alpha.40 → 0.1.0-alpha.6

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 (124) hide show
  1. package/dist/commands/app/index.d.ts +8 -0
  2. package/dist/commands/app/index.js +16 -4
  3. package/dist/commands/app/index.js.map +1 -0
  4. package/dist/commands/auth/index.js +2 -20
  5. package/dist/commands/auth/index.js.map +1 -0
  6. package/dist/commands/auth/init.d.ts +0 -1
  7. package/dist/commands/auth/init.js +97 -231
  8. package/dist/commands/auth/init.js.map +1 -0
  9. package/dist/commands/auth/login.d.ts +0 -2
  10. package/dist/commands/auth/login.js +18 -136
  11. package/dist/commands/auth/login.js.map +1 -0
  12. package/dist/commands/auth/logout.js +7 -19
  13. package/dist/commands/auth/logout.js.map +1 -0
  14. package/dist/commands/auth/sessions.js +4 -7
  15. package/dist/commands/auth/sessions.js.map +1 -0
  16. package/dist/commands/auth/status.js +12 -33
  17. package/dist/commands/auth/status.js.map +1 -0
  18. package/dist/commands/credits/index.js +3 -2
  19. package/dist/commands/credits/index.js.map +1 -0
  20. package/dist/commands/mcp/index.js +14 -81
  21. package/dist/commands/mcp/index.js.map +1 -0
  22. package/dist/commands/open/index.d.ts +8 -0
  23. package/dist/commands/open/index.js +11 -0
  24. package/dist/commands/open/index.js.map +1 -0
  25. package/dist/commands/scan/index.js +8 -3
  26. package/dist/commands/scan/index.js.map +1 -0
  27. package/dist/commands/target/index.js +3 -0
  28. package/dist/commands/target/index.js.map +1 -0
  29. package/dist/commands/tm/index.js +10 -3
  30. package/dist/commands/tm/index.js.map +1 -0
  31. package/dist/index.js +1 -13
  32. package/dist/index.js.map +1 -0
  33. package/dist/internal/extractor/adapters/go/index.d.ts +4 -0
  34. package/dist/internal/extractor/adapters/go/index.js +6 -0
  35. package/dist/internal/extractor/adapters/go/index.js.map +1 -0
  36. package/dist/internal/extractor/adapters/go/manifest.d.ts +17 -0
  37. package/dist/internal/extractor/adapters/go/manifest.js +25 -19
  38. package/dist/internal/extractor/adapters/go/manifest.js.map +1 -0
  39. package/dist/internal/extractor/adapters/go/parser.d.ts +4 -0
  40. package/dist/internal/extractor/adapters/go/parser.js +5 -0
  41. package/dist/internal/extractor/adapters/go/parser.js.map +1 -0
  42. package/dist/internal/extractor/adapters/go/scanner.d.ts +20 -0
  43. package/dist/internal/extractor/adapters/go/scanner.js +43 -0
  44. package/dist/internal/extractor/adapters/go/scanner.js.map +1 -0
  45. package/dist/internal/extractor/adapters/python/index.d.ts +3 -0
  46. package/dist/internal/extractor/adapters/python/index.js +4 -0
  47. package/dist/internal/extractor/adapters/python/index.js.map +1 -0
  48. package/dist/internal/extractor/adapters/python/manifest.d.ts +8 -0
  49. package/dist/internal/extractor/adapters/python/manifest.js +18 -21
  50. package/dist/internal/extractor/adapters/python/manifest.js.map +1 -0
  51. package/dist/internal/extractor/adapters/python/parser.d.ts +3 -0
  52. package/dist/internal/extractor/adapters/python/parser.js +4 -0
  53. package/dist/internal/extractor/adapters/python/parser.js.map +1 -0
  54. package/dist/internal/extractor/adapters/python/scanner.d.ts +18 -0
  55. package/dist/internal/extractor/adapters/python/scanner.js +54 -1
  56. package/dist/internal/extractor/adapters/python/scanner.js.map +1 -0
  57. package/dist/internal/extractor/adapters/typescript/index.d.ts +7 -0
  58. package/dist/internal/extractor/adapters/typescript/index.js +21 -1
  59. package/dist/internal/extractor/adapters/typescript/index.js.map +1 -0
  60. package/dist/internal/extractor/adapters/typescript/manifest.d.ts +14 -0
  61. package/dist/internal/extractor/adapters/typescript/manifest.js +17 -26
  62. package/dist/internal/extractor/adapters/typescript/manifest.js.map +1 -0
  63. package/dist/internal/extractor/adapters/typescript/parser.d.ts +8 -0
  64. package/dist/internal/extractor/adapters/typescript/parser.js +9 -0
  65. package/dist/internal/extractor/adapters/typescript/parser.js.map +1 -0
  66. package/dist/internal/extractor/adapters/typescript/scanner.d.ts +24 -0
  67. package/dist/internal/extractor/adapters/typescript/scanner.js +43 -0
  68. package/dist/internal/extractor/adapters/typescript/scanner.js.map +1 -0
  69. package/dist/internal/extractor/index.d.ts +14 -0
  70. package/dist/internal/extractor/index.js +13 -0
  71. package/dist/internal/extractor/index.js.map +1 -0
  72. package/dist/internal/extractor/types.d.ts +45 -0
  73. package/dist/internal/extractor/types.js +27 -0
  74. package/dist/internal/extractor/types.js.map +1 -0
  75. package/dist/internal/extractor/walker.d.ts +18 -0
  76. package/dist/internal/extractor/walker.js +18 -0
  77. package/dist/internal/extractor/walker.js.map +1 -0
  78. package/dist/internal/ide-setup.d.ts +7 -16
  79. package/dist/internal/ide-setup.js +46 -320
  80. package/dist/internal/ide-setup.js.map +1 -0
  81. package/dist/internal/orgs.js +1 -0
  82. package/dist/internal/orgs.js.map +1 -0
  83. package/dist/internal/project-binding.d.ts +0 -1
  84. package/dist/internal/project-binding.js +9 -14
  85. package/dist/internal/project-binding.js.map +1 -0
  86. package/dist/internal/target-auth/api-config.d.ts +17 -0
  87. package/dist/internal/target-auth/api-config.js +18 -0
  88. package/dist/internal/target-auth/api-config.js.map +1 -0
  89. package/dist/internal/target-auth/config.d.ts +12 -0
  90. package/dist/internal/target-auth/config.js +13 -0
  91. package/dist/internal/target-auth/config.js.map +1 -0
  92. package/dist/internal/target-auth/index.d.ts +18 -0
  93. package/dist/internal/target-auth/index.js +19 -0
  94. package/dist/internal/target-auth/index.js.map +1 -0
  95. package/dist/internal/target-auth/keychain.d.ts +18 -0
  96. package/dist/internal/target-auth/keychain.js +23 -3
  97. package/dist/internal/target-auth/keychain.js.map +1 -0
  98. package/dist/internal/target-auth/types.d.ts +26 -0
  99. package/dist/internal/target-auth/types.js +10 -0
  100. package/dist/internal/target-auth/types.js.map +1 -0
  101. package/dist/internal/target-auth/workos.d.ts +15 -0
  102. package/dist/internal/target-auth/workos.js +18 -9
  103. package/dist/internal/target-auth/workos.js.map +1 -0
  104. package/package.json +5 -19
  105. package/LICENSE +0 -201
  106. package/README.md +0 -31
  107. package/dist/commands/auth/bind.d.ts +0 -4
  108. package/dist/commands/auth/bind.js +0 -97
  109. package/dist/commands/auth/token.d.ts +0 -4
  110. package/dist/commands/auth/token.js +0 -73
  111. package/dist/commands/check/index.d.ts +0 -2
  112. package/dist/commands/check/index.js +0 -463
  113. package/dist/commands/inspect/index.d.ts +0 -2
  114. package/dist/commands/inspect/index.js +0 -136
  115. package/dist/internal/binding-token-mint.d.ts +0 -33
  116. package/dist/internal/binding-token-mint.js +0 -174
  117. package/dist/internal/extractor/graph-builder.d.ts +0 -10
  118. package/dist/internal/extractor/graph-builder.js +0 -245
  119. package/dist/internal/extractor/graph-types.d.ts +0 -89
  120. package/dist/internal/extractor/graph-types.js +0 -1
  121. package/dist/internal/github-linkage-prompt.d.ts +0 -7
  122. package/dist/internal/github-linkage-prompt.js +0 -95
  123. package/dist/internal/org-picker.d.ts +0 -11
  124. package/dist/internal/org-picker.js +0 -34
@@ -1,3 +1,24 @@
1
+ /**
2
+ * AST scanner for TypeScript / JavaScript source files.
3
+ *
4
+ * For each file: parses with tree-sitter-typescript, walks the tree
5
+ * looking for:
6
+ *
7
+ * 1. `import` / `require` statements naming any tracked package
8
+ * (AI SDKs, web frameworks, DB clients) → import-evidence + extra
9
+ * ExternalService call sites
10
+ * 2. Express-style route declarations:
11
+ * app.METHOD("/path", ...)
12
+ * router.METHOD("/path", ...)
13
+ * server.METHOD("/path", ...)
14
+ * where METHOD is one of GET/POST/PUT/DELETE/PATCH/ALL/USE
15
+ * → HTTP-route-evidence on a component derived from the file
16
+ *
17
+ * Privacy invariant: we only ever emit identifier names, file paths,
18
+ * line numbers, dependency identifiers, and HTTP method/path strings.
19
+ * Function bodies and inline values are never read past the first arg
20
+ * of a route call.
21
+ */
1
22
  import * as fs from "node:fs/promises";
2
23
  import { getParsers, pickParserForFile } from "./parser.js";
3
24
  import { AI_SDK_PACKAGES, DATA_STORE_PACKAGES, WEB_FRAMEWORK_PACKAGES, } from "./manifest.js";
@@ -54,22 +75,35 @@ function walk(node, visit) {
54
75
  walk(child, visit);
55
76
  }
56
77
  }
78
+ /** Pull the string literal from `import … from "<here>"`. */
57
79
  function extractImportSource(node) {
80
+ // import_statement → ... → (string (string_fragment))
58
81
  const stringNode = node.children.find((c) => c?.type === "string");
59
82
  if (!stringNode)
60
83
  return null;
61
84
  const frag = stringNode.namedChildren.find((c) => c?.type === "string_fragment");
62
85
  return frag?.text ?? null;
63
86
  }
87
+ /** Map a package import to a tracked-package identifier, allowing for sub-paths. */
64
88
  function trackedPackageMatch(pkg) {
65
89
  if (TRACKED_PACKAGES.has(pkg))
66
90
  return pkg;
91
+ // sub-paths: "@anthropic-ai/sdk/foo" → "@anthropic-ai/sdk"
67
92
  for (const tracked of TRACKED_PACKAGES) {
68
93
  if (pkg.startsWith(tracked + "/"))
69
94
  return tracked;
70
95
  }
71
96
  return null;
72
97
  }
98
+ /**
99
+ * Identify Express-style route calls. Only inspects the AST shape; never
100
+ * reads the handler-function body.
101
+ *
102
+ * Matches:
103
+ * <ROUTER_IDENT>.<METHOD>("/path", ...)
104
+ *
105
+ * Where the second-and-onward args are deliberately ignored.
106
+ */
73
107
  function extractRouteCall(node) {
74
108
  const fn = node.namedChildren.find((c) => c?.type === "member_expression");
75
109
  const args = node.namedChildren.find((c) => c?.type === "arguments");
@@ -85,6 +119,7 @@ function extractRouteCall(node) {
85
119
  return null;
86
120
  if (!HTTP_METHODS.has(methodName))
87
121
  return null;
122
+ // First arg should be a string literal — the route path.
88
123
  const firstArg = args.namedChildren[0];
89
124
  if (!firstArg || firstArg.type !== "string")
90
125
  return null;
@@ -100,6 +135,8 @@ export function aggregate(scans) {
100
135
  for (const s of scans) {
101
136
  if (s.routes.length === 0 && s.imports.length === 0)
102
137
  continue;
138
+ // Tag SDK call sites. Each tracked import of an AI SDK package
139
+ // counts as a call site for that vendor, on top of the manifest hit.
103
140
  for (const imp of s.imports) {
104
141
  if (AI_SDK_PACKAGES[imp.package]) {
105
142
  const arr = aiSdkCallSites.get(imp.package) ?? [];
@@ -115,6 +152,8 @@ export function aggregate(scans) {
115
152
  }
116
153
  if (s.routes.length === 0)
117
154
  continue;
155
+ // Derive a friendly component name from the file path (the deepest
156
+ // meaningful directory). e.g. src/auth/login.ts → "auth".
118
157
  const name = deriveComponentName(s.file);
119
158
  const framework = detectFrameworkFromImports(s.imports);
120
159
  components.push({
@@ -129,7 +168,10 @@ export function aggregate(scans) {
129
168
  }
130
169
  function deriveComponentName(filePath) {
131
170
  const segs = filePath.split("/");
171
+ // Drop "src" / "lib" / "app" prefixes so the name is meaningful.
132
172
  const start = ["src", "lib", "app"].includes(segs[0]) ? 1 : 0;
173
+ // Use the parent directory as the component (e.g. "auth"), or the
174
+ // filename root if the file lives at the top level.
133
175
  if (segs.length - start >= 2)
134
176
  return segs[start];
135
177
  const last = segs[segs.length - 1];
@@ -143,3 +185,4 @@ function detectFrameworkFromImports(imports) {
143
185
  }
144
186
  return undefined;
145
187
  }
188
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../../src/internal/extractor/adapters/typescript/scanner.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,22 @@
1
+ /**
2
+ * Extractor orchestrator.
3
+ *
4
+ * Walks the customer's repo, dispatches matched files to per-language
5
+ * adapters, merges their findings into a single ExtractionResult.
6
+ *
7
+ * Adapters register their own file extensions + manifest filenames; the
8
+ * walker only reads files those filters claim. So adding a Go or Python
9
+ * adapter doesn't change anything here — register the adapter and the
10
+ * orchestrator picks up its files.
11
+ */
1
12
  import type { ExtractionResult } from "./types.js";
2
13
  export interface RunOptions {
3
14
  rootDir: string;
15
+ /** Subset of language adapters to run; defaults to all registered. */
4
16
  languages?: Array<"typescript" | "go" | "python">;
17
+ /** Extra ignore patterns from --ignore flags. */
5
18
  extraIgnores?: string[];
19
+ /** Version string for the extractor — usually @zivis/cli's package version. */
6
20
  extractorVersion: string;
7
21
  }
8
22
  export declare function runExtractor(opts: RunOptions): Promise<ExtractionResult>;
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Extractor orchestrator.
3
+ *
4
+ * Walks the customer's repo, dispatches matched files to per-language
5
+ * adapters, merges their findings into a single ExtractionResult.
6
+ *
7
+ * Adapters register their own file extensions + manifest filenames; the
8
+ * walker only reads files those filters claim. So adding a Go or Python
9
+ * adapter doesn't change anything here — register the adapter and the
10
+ * orchestrator picks up its files.
11
+ */
1
12
  import * as path from "node:path";
2
13
  import { walk } from "./walker.js";
3
14
  import { typescriptAdapter } from "./adapters/typescript/index.js";
@@ -14,6 +25,7 @@ export async function runExtractor(opts) {
14
25
  const adapters = opts.languages
15
26
  ? ADAPTERS.filter((a) => opts.languages.includes(a.language))
16
27
  : ADAPTERS;
28
+ // Aggregate the file filters from each adapter so we walk the tree once.
17
29
  const extensions = new Set();
18
30
  const manifests = new Set();
19
31
  for (const a of adapters) {
@@ -92,3 +104,4 @@ function dedupeExternalServices(items) {
92
104
  }
93
105
  return [...out.values()];
94
106
  }
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/extractor/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,29 @@
1
+ /**
2
+ * Extractor output schema.
3
+ *
4
+ * Matches `THREAT-MODEL-PHASE-J.md`'s J.2 output shape, with additions
5
+ * for privacy-audit metadata. The shape is the contract between the CLI
6
+ * and the eventual `--apply` endpoint that maps into ThreatModelComponent
7
+ * / OrgComponent records (RECON.3-gated).
8
+ *
9
+ * Privacy invariant — what's IN the JSON:
10
+ * component names ("auth-service")
11
+ * file paths ("src/auth/login.ts")
12
+ * line numbers (42)
13
+ * framework + SDK identifiers ("express", "@anthropic-ai/sdk")
14
+ * detected protocols / methods (POST /login)
15
+ * dependency versions (from package.json / go.mod / pyproject.toml)
16
+ *
17
+ * What's NOT:
18
+ * function bodies, file contents, code snippets
19
+ * variable names from inside functions
20
+ * comments
21
+ * raw AST nodes
22
+ *
23
+ * `zivis tm extract --privacy-audit` prints this whole object to stdout
24
+ * before any network call, so the customer can see exactly what would
25
+ * be sent.
26
+ */
1
27
  export type Language = "typescript" | "javascript" | "go" | "python";
2
28
  export interface EvidenceLocation {
3
29
  file: string;
@@ -18,16 +44,21 @@ export interface ConfigEvidence extends EvidenceLocation {
18
44
  export type Evidence = HttpRouteEvidence | ImportEvidence | ConfigEvidence;
19
45
  export type ComponentKind = "process" | "data_store" | "external_service" | "frontend";
20
46
  export interface ExtractedComponent {
47
+ /** Stable name derived from path / module — never a value from inside a function. */
21
48
  name: string;
22
49
  kind: ComponentKind;
23
50
  language: Language;
51
+ /** Detected web framework, if any (express | fastify | nextjs | trpc | hono | gin | echo | …). */
24
52
  framework?: string;
25
53
  sourceFiles: string[];
26
54
  evidence: Evidence[];
27
55
  }
28
56
  export interface ExtractedExternalService {
57
+ /** Vendor / SDK name — "Anthropic", "OpenAI", "WorkOS". */
29
58
  name: string;
59
+ /** What kind of integration: ai_sdk, payments, auth, observability, etc. */
30
60
  kind: string;
61
+ /** npm/PyPI/Go module identifier ("@anthropic-ai/sdk"). */
31
62
  package: string;
32
63
  version?: string;
33
64
  callSites: EvidenceLocation[];
@@ -53,16 +84,30 @@ export interface ExtractionResult {
53
84
  components: ExtractedComponent[];
54
85
  externalServices: ExtractedExternalService[];
55
86
  dataStores: ExtractedDataStore[];
87
+ /**
88
+ * Per-language manifests detected in the scope. Surfaces dependency-only
89
+ * findings (e.g., "this repo uses @anthropic-ai/sdk@^0.30") even when
90
+ * we can't yet match call sites.
91
+ */
56
92
  manifests: ManifestSummary[];
57
93
  }
58
94
  export interface ManifestSummary {
59
95
  language: Language;
60
96
  file: string;
97
+ /** Direct dependency names → version (verbatim from manifest). */
61
98
  dependencies: Record<string, string>;
62
99
  }
100
+ /**
101
+ * Adapter contract — one per language. Each adapter is fed the list of
102
+ * source files matched for it (already filtered by .gitignore + .zivisignore)
103
+ * plus any manifest files (package.json, go.mod, pyproject.toml). Returns
104
+ * structured findings the framework merges into the final ExtractionResult.
105
+ */
63
106
  export interface LanguageAdapter {
64
107
  language: Language;
108
+ /** File extensions this adapter handles. */
65
109
  extensions: string[];
110
+ /** Manifest filenames this adapter cares about. */
66
111
  manifests: string[];
67
112
  extract(input: AdapterInput): Promise<AdapterOutput>;
68
113
  }
@@ -1 +1,28 @@
1
+ /**
2
+ * Extractor output schema.
3
+ *
4
+ * Matches `THREAT-MODEL-PHASE-J.md`'s J.2 output shape, with additions
5
+ * for privacy-audit metadata. The shape is the contract between the CLI
6
+ * and the eventual `--apply` endpoint that maps into ThreatModelComponent
7
+ * / OrgComponent records (RECON.3-gated).
8
+ *
9
+ * Privacy invariant — what's IN the JSON:
10
+ * component names ("auth-service")
11
+ * file paths ("src/auth/login.ts")
12
+ * line numbers (42)
13
+ * framework + SDK identifiers ("express", "@anthropic-ai/sdk")
14
+ * detected protocols / methods (POST /login)
15
+ * dependency versions (from package.json / go.mod / pyproject.toml)
16
+ *
17
+ * What's NOT:
18
+ * function bodies, file contents, code snippets
19
+ * variable names from inside functions
20
+ * comments
21
+ * raw AST nodes
22
+ *
23
+ * `zivis tm extract --privacy-audit` prints this whole object to stdout
24
+ * before any network call, so the customer can see exactly what would
25
+ * be sent.
26
+ */
1
27
  export {};
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/internal/extractor/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
@@ -1,7 +1,24 @@
1
+ /**
2
+ * Filesystem walker — yields source files relative to the scan root,
3
+ * filtered by .gitignore + .zivisignore + per-extractor extension filters.
4
+ *
5
+ * Uses the `ignore` npm package (the same engine git ships with) so the
6
+ * matching semantics mirror what developers expect from .gitignore.
7
+ *
8
+ * Hard limits:
9
+ * - Skips node_modules, dist, build, .next, .git, .yarn, vendor — even
10
+ * if not in .gitignore. These exist by convention and contain
11
+ * third-party code that pollutes the inventory.
12
+ * - Caps total files at 50_000 to refuse to scan a generated monorepo
13
+ * by accident (extractor would take forever; user should narrow scope).
14
+ */
1
15
  export interface WalkOptions {
2
16
  rootDir: string;
17
+ /** Extensions to include (with the leading dot, e.g. [".ts", ".tsx"]). */
3
18
  extensions: string[];
19
+ /** Manifest basenames to capture regardless of extension (e.g. ["package.json"]). */
4
20
  manifests: string[];
21
+ /** Extra ignore patterns from --ignore CLI flags. */
5
22
  extraIgnores?: string[];
6
23
  }
7
24
  export interface WalkResult {
@@ -11,4 +28,5 @@ export interface WalkResult {
11
28
  filesSkipped: number;
12
29
  }
13
30
  export declare function walk(opts: WalkOptions): Promise<WalkResult>;
31
+ /** Convert an absolute path to a posix-style repo-relative path. */
14
32
  export declare function repoRelative(rootDir: string, absPath: string): string;
@@ -1,3 +1,17 @@
1
+ /**
2
+ * Filesystem walker — yields source files relative to the scan root,
3
+ * filtered by .gitignore + .zivisignore + per-extractor extension filters.
4
+ *
5
+ * Uses the `ignore` npm package (the same engine git ships with) so the
6
+ * matching semantics mirror what developers expect from .gitignore.
7
+ *
8
+ * Hard limits:
9
+ * - Skips node_modules, dist, build, .next, .git, .yarn, vendor — even
10
+ * if not in .gitignore. These exist by convention and contain
11
+ * third-party code that pollutes the inventory.
12
+ * - Caps total files at 50_000 to refuse to scan a generated monorepo
13
+ * by accident (extractor would take forever; user should narrow scope).
14
+ */
1
15
  import * as fs from "node:fs/promises";
2
16
  import * as path from "node:path";
3
17
  import ignore from "ignore";
@@ -50,6 +64,7 @@ export async function walk(opts) {
50
64
  filesSkipped++;
51
65
  continue;
52
66
  }
67
+ // ignore() expects gitignore-style paths with trailing /
53
68
  if (ig.ignores(childRel + "/")) {
54
69
  filesSkipped++;
55
70
  continue;
@@ -84,9 +99,12 @@ async function loadIgnoreFile(ig, filePath) {
84
99
  ig.add(content);
85
100
  }
86
101
  catch {
102
+ // No ignore file — fine.
87
103
  }
88
104
  }
105
+ /** Convert an absolute path to a posix-style repo-relative path. */
89
106
  export function repoRelative(rootDir, absPath) {
90
107
  const rel = path.relative(rootDir, absPath);
91
108
  return rel.split(path.sep).join("/");
92
109
  }
110
+ //# sourceMappingURL=walker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walker.js","sourceRoot":"","sources":["../../../src/internal/extractor/walker.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,7 @@
1
- export type Package = "appsec" | "builder";
2
- export type GuidanceClient = "cursor" | "claude-code-cli" | "vscode-copilot" | "vscode-claude" | "cline" | "windsurf";
3
- export interface GuidanceOptions {
4
- cwd: string;
5
- client: GuidanceClient;
6
- }
7
- export declare function writeGuidance(opts: GuidanceOptions): string[];
8
- export declare function detectIdesInRepo(cwd: string): GuidanceClient[];
9
- export declare function setupCursor(pkg?: Package): Promise<void>;
10
- export declare function setupCursorWorkspace(pkg?: Package): Promise<void>;
11
- export declare function setupVsCodeCopilot(pkg?: Package): Promise<void>;
12
- export declare function setupVsCodeClaude(pkg?: Package): Promise<void>;
13
- export declare function setupClaudeCodeCli(pkg?: Package): Promise<void>;
14
- export declare function setupCline(pkg?: Package): Promise<void>;
15
- export declare function setupWindsurf(pkg?: Package): Promise<void>;
16
- export declare function printClaudeCodeManual(pkg?: Package): void;
1
+ export declare function setupCursor(session?: string): Promise<void>;
2
+ export declare function setupVsCodeCopilot(session?: string): Promise<void>;
3
+ export declare function setupVsCodeClaude(session?: string): Promise<void>;
4
+ export declare function setupClaudeCodeCli(session?: string): Promise<void>;
5
+ export declare function setupCline(session?: string): Promise<void>;
6
+ export declare function setupWindsurf(session?: string): Promise<void>;
7
+ export declare function printClaudeCodeManual(session?: string): void;