@guiho/xdocs 0.3.1 → 0.4.9
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/CHANGELOG.md +20 -0
- package/DOCS.md +108 -37
- package/README.md +108 -33
- package/docs/2026-07-05-xdocs-document-model.md +77 -0
- package/docs/decisions/2026-07-09-package-launcher-source-fallback.md +65 -0
- package/docs/decisions/decisions.xdocs.md +22 -0
- package/docs/docs.xdocs.md +23 -0
- package/jsr.json +1 -1
- package/library/agents.d.ts +1 -1
- package/library/agents.d.ts.map +1 -1
- package/library/agents.js +10 -6
- package/library/commands/generate.d.ts.map +1 -1
- package/library/commands/generate.js +23 -1
- package/library/commands/list.d.ts.map +1 -1
- package/library/commands/list.js +14 -4
- package/library/commands/merge.d.ts.map +1 -1
- package/library/commands/merge.js +12 -1
- package/library/commands/scan.d.ts.map +1 -1
- package/library/commands/scan.js +13 -2
- package/library/config.d.ts.map +1 -1
- package/library/config.js +7 -3
- package/library/discovery.d.ts +8 -4
- package/library/discovery.d.ts.map +1 -1
- package/library/discovery.js +107 -17
- package/library/flags.d.ts +1 -1
- package/library/flags.js +1 -1
- package/library/guiho-xdocs-bin.d.ts +1 -1
- package/library/guiho-xdocs-bin.js +1 -1
- package/library/guiho-xdocs.d.ts +2 -2
- package/library/guiho-xdocs.d.ts.map +1 -1
- package/library/guiho-xdocs.js +1 -1
- package/library/help.js +16 -15
- package/library/metadata.d.ts +1 -1
- package/library/metadata.d.ts.map +1 -1
- package/library/metadata.js +23 -3
- package/library/tree.d.ts +1 -1
- package/library/tree.d.ts.map +1 -1
- package/library/tree.js +2 -2
- package/library/types.d.ts +14 -2
- package/library/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/prompts/agents.md +9 -2
- package/prompts/generate.md +10 -2
- package/prompts/prompts.xdocs.md +27 -0
- package/prompts/update.md +19 -7
- package/prompts/write.md +18 -5
- package/scripts/install-package.ts +42 -22
- package/scripts/scripts.xdocs.md +10 -3
- package/scripts/xdocs-bin.ts +16 -2
- package/skills/guiho-s-xdocs/SKILL.md +133 -32
- package/skills/guiho-s-xdocs/guiho-s-xdocs.xdocs.md +26 -0
- package/skills/skills.xdocs.md +9 -4
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xdocs Document Model
|
|
3
|
+
purpose: Record the descriptor-plus-companion-document model for future xdocs implementation work.
|
|
4
|
+
description: Explains how named xdocs descriptors, root XDOCS.md, and same-directory Markdown companion documents work together for AI navigation.
|
|
5
|
+
created: 2026-07-05
|
|
6
|
+
keywords:
|
|
7
|
+
- xdocs descriptors
|
|
8
|
+
- companion documents
|
|
9
|
+
- AI navigation
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# xdocs Document Model
|
|
13
|
+
|
|
14
|
+
## Summary
|
|
15
|
+
|
|
16
|
+
xdocs now treats a directory as documented by exactly one named `*.xdocs.md`
|
|
17
|
+
descriptor. The root of a repository still uses `XDOCS.md` as a plain index with
|
|
18
|
+
no frontmatter, but normal modules use a descriptor such as
|
|
19
|
+
`authentication.xdocs.md`. A file named only `.xdocs.md` is invalid because
|
|
20
|
+
`.xdocs.md` is the extension, not the filename.
|
|
21
|
+
|
|
22
|
+
## Descriptor Metadata
|
|
23
|
+
|
|
24
|
+
The descriptor is the AI-facing map for a module. Its YAML frontmatter contains
|
|
25
|
+
the module identity, parent/child tree links, implementation files, and sibling
|
|
26
|
+
Markdown companion documents.
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
---
|
|
30
|
+
subject: authentication
|
|
31
|
+
description: Authentication implementation and session behavior.
|
|
32
|
+
parent: backend
|
|
33
|
+
children: []
|
|
34
|
+
files:
|
|
35
|
+
login.ts: Email/password login flow.
|
|
36
|
+
session.ts: Session lifecycle and validation.
|
|
37
|
+
documents:
|
|
38
|
+
authentication-implementation.md: Detailed implementation notes and decisions.
|
|
39
|
+
tags:
|
|
40
|
+
- security
|
|
41
|
+
keywords:
|
|
42
|
+
- authentication
|
|
43
|
+
- sessions
|
|
44
|
+
- implementation notes
|
|
45
|
+
flags: []
|
|
46
|
+
status: stable
|
|
47
|
+
---
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`files` is for implementation, configuration, and asset files. `documents` is
|
|
51
|
+
only for same-directory plain `*.md` files that are not `*.xdocs.md` descriptors
|
|
52
|
+
and not `XDOCS.md`.
|
|
53
|
+
|
|
54
|
+
`keywords` is for search terms and concepts an agent can use to match a user
|
|
55
|
+
request to the right descriptor. Companion Markdown documents use the same idea
|
|
56
|
+
in their own frontmatter.
|
|
57
|
+
|
|
58
|
+
## AI Workflow
|
|
59
|
+
|
|
60
|
+
Agents should use `xdocs scan` to locate named `*.xdocs.md` descriptors, read
|
|
61
|
+
frontmatter first, and use the `documents` map to decide which companion
|
|
62
|
+
Markdown files are worth opening. When a user asks about a module, the agent can
|
|
63
|
+
find the relevant module by descriptor metadata before reading source files.
|
|
64
|
+
|
|
65
|
+
When changing a directory, an agent must update the directory descriptor so the
|
|
66
|
+
`files`, `documents`, `keywords`, `parent`, and `children` fields match disk. If a sibling
|
|
67
|
+
plain Markdown file is added, renamed, or removed, the descriptor's `documents`
|
|
68
|
+
map changes in the same unit of work.
|
|
69
|
+
|
|
70
|
+
## CLI Rules
|
|
71
|
+
|
|
72
|
+
`xdocs scan` reports descriptor coverage and validates that every sibling plain
|
|
73
|
+
Markdown file is listed in `documents`. It also marks a directory invalid when it
|
|
74
|
+
has multiple `*.xdocs.md` descriptors or a nameless `.xdocs.md` file.
|
|
75
|
+
|
|
76
|
+
`xdocs list`, `xdocs generate`, and `xdocs merge` surface both implementation
|
|
77
|
+
files and companion documents, keeping the two categories separate.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Package Launcher Source Fallback
|
|
3
|
+
purpose: Record the immediate repair decisions for broken xdocs package execution after the package moved to the repository root.
|
|
4
|
+
description: Explains why the package launcher now falls back to the TypeScript CLI in source checkouts and why root package metadata/docs were corrected together.
|
|
5
|
+
created: 2026-07-09T18:38:18Z
|
|
6
|
+
flags:
|
|
7
|
+
- decision
|
|
8
|
+
tags:
|
|
9
|
+
- cli
|
|
10
|
+
- package
|
|
11
|
+
- documentation
|
|
12
|
+
keywords:
|
|
13
|
+
- xdocs-bin
|
|
14
|
+
- source checkout
|
|
15
|
+
- native binary
|
|
16
|
+
- vendor
|
|
17
|
+
- package root
|
|
18
|
+
- mirror.config.toml
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Package Launcher Source Fallback
|
|
22
|
+
|
|
23
|
+
## Summary
|
|
24
|
+
|
|
25
|
+
xdocs failed when the package launcher was executed from a source checkout with no
|
|
26
|
+
`vendor/xdocs` native binary. `scripts/install-package.ts` correctly skips native
|
|
27
|
+
binary download when `source/guiho-xdocs-bin.ts` exists, but
|
|
28
|
+
`scripts/xdocs-bin.ts` still expected the vendor binary to appear and exited with
|
|
29
|
+
an error.
|
|
30
|
+
|
|
31
|
+
The selected fix is to make the package launcher prefer the native vendor binary
|
|
32
|
+
when it exists, fall back to the TypeScript CLI when running from a source
|
|
33
|
+
checkout, and only invoke the installer for published package layouts where the
|
|
34
|
+
source entrypoint is absent.
|
|
35
|
+
|
|
36
|
+
## Decisions
|
|
37
|
+
|
|
38
|
+
1. Preserve native-binary-first execution for installed packages. Published npm
|
|
39
|
+
installs and `bunx` executions should still delegate to `vendor/xdocs` or
|
|
40
|
+
`vendor/xdocs.exe` after postinstall or first-run installation.
|
|
41
|
+
2. Treat `source/guiho-xdocs-bin.ts` as the source-checkout fallback. This keeps
|
|
42
|
+
local development and repository-root package execution working without
|
|
43
|
+
downloading a release artifact.
|
|
44
|
+
3. Keep package-root metadata consistent with the current layout. The package now
|
|
45
|
+
lives at the repository root, so `repository.directory`, `mirror.config.toml`,
|
|
46
|
+
`AGENTS.md`, `XDOCS.md`, and the root xdocs descriptor must not point at a
|
|
47
|
+
nested `xdocs/` package directory.
|
|
48
|
+
|
|
49
|
+
## Rejected Alternatives
|
|
50
|
+
|
|
51
|
+
1. Always download a native binary, even in source checkouts. This would make
|
|
52
|
+
development depend on an already-published release and would not test the
|
|
53
|
+
local TypeScript source being edited.
|
|
54
|
+
2. Run `install-package.ts` first and infer its skip result from output. That
|
|
55
|
+
keeps the broken control flow indirect and noisy for normal source-checkout
|
|
56
|
+
commands.
|
|
57
|
+
3. Remove the native launcher path entirely. That would regress the intended
|
|
58
|
+
CLI-only distribution where users can run the compiled binary without Node.js
|
|
59
|
+
or Bun at runtime after installation.
|
|
60
|
+
|
|
61
|
+
## Validation
|
|
62
|
+
|
|
63
|
+
The repair is validated by a regression test that executes
|
|
64
|
+
`bun run scripts/xdocs-bin.ts --version` from the source checkout and asserts that
|
|
65
|
+
it exits successfully without reporting a missing native binary.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
subject: xdocs-decisions
|
|
3
|
+
description: Decision records for xdocs implementation and operational repairs.
|
|
4
|
+
parent: xdocs-docs
|
|
5
|
+
children: []
|
|
6
|
+
files: {}
|
|
7
|
+
documents:
|
|
8
|
+
2026-07-09-package-launcher-source-fallback.md: Records the decision to make the package launcher fall back to the TypeScript CLI in source checkouts while published installs keep using native binaries.
|
|
9
|
+
tags:
|
|
10
|
+
- documentation
|
|
11
|
+
- decisions
|
|
12
|
+
keywords:
|
|
13
|
+
- decisions
|
|
14
|
+
- launcher
|
|
15
|
+
- source checkout
|
|
16
|
+
flags: []
|
|
17
|
+
status: stable
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
The `docs/decisions/` directory stores point-in-time technical decisions for
|
|
21
|
+
xdocs. Each decision document captures context, selected behavior, rejected
|
|
22
|
+
alternatives, and validation evidence for future agents and maintainers.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
subject: xdocs-docs
|
|
3
|
+
description: Durable project documentation for xdocs behavior, design notes, and implementation context.
|
|
4
|
+
parent: xdocs-package
|
|
5
|
+
children:
|
|
6
|
+
- xdocs-decisions
|
|
7
|
+
files: {}
|
|
8
|
+
documents:
|
|
9
|
+
2026-07-05-xdocs-document-model.md: Defines the named descriptor plus companion Markdown document model for xdocs modules.
|
|
10
|
+
tags:
|
|
11
|
+
- documentation
|
|
12
|
+
- design
|
|
13
|
+
keywords:
|
|
14
|
+
- document model
|
|
15
|
+
- design notes
|
|
16
|
+
- companion documents
|
|
17
|
+
flags: []
|
|
18
|
+
status: stable
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
The `docs/` directory stores durable xdocs project notes. Plain Markdown
|
|
22
|
+
documents directly in this directory are listed in `documents`; categorized
|
|
23
|
+
subdirectories such as `decisions/` have their own xdocs descriptors.
|
package/jsr.json
CHANGED
package/library/agents.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export declare const detectAgentTools: (cwd: string) => XDocsAgentTool[];
|
|
|
38
38
|
*/
|
|
39
39
|
export declare const resolveInstallTools: (cwd: string, toolFlag: string | undefined) => XDocsAgentTool[];
|
|
40
40
|
/** The small AGENTS.md section announcing xdocs and pointing to the skill. */
|
|
41
|
-
export declare const xdocsAgentsSection = "<!-- BEGIN XDOCS \u2014 DO NOT EDIT THIS SECTION -->\n## XDocs Structured Documentation\n\nThis project uses **xdocs** (`@guiho/xdocs`) for structured, machine-readable\ndocumentation. The repository has one root `XDOCS.md` index (no frontmatter),\nand each package/application has a root
|
|
41
|
+
export declare const xdocsAgentsSection = "<!-- BEGIN XDOCS \u2014 DO NOT EDIT THIS SECTION -->\n## XDocs Structured Documentation\n\nThis project uses **xdocs** (`@guiho/xdocs`) for structured, machine-readable\ndocumentation. The repository has one root `XDOCS.md` index (no frontmatter),\nand each package/application has a root named `*.xdocs.md` descriptor file. Each\ndocumented module has exactly one named `*.xdocs.md` descriptor in its directory\nwith YAML frontmatter (`subject`, `description`, `parent`, `children`,\n`files`, `documents`, `tags`, `keywords`, `flags`). Same-directory plain\n`*.md` files are companion documents and must be listed in the descriptor's\n`documents` metadata map. Ordinary companion documents should also include\n`keywords` in their own frontmatter.\n\n**Load the `guiho-s-xdocs` agent skill** for any documentation work:\ncreating, updating, regenerating, scanning, merging, or navigating xdocs descriptors.\nThe skill holds the full workflow, metadata schema, and CLI reference.\n\nBefore changing documentation, read `xdocs.config.toml` and respect `[ai].mode`:\n\n- **prompt** \u2014 announce which xdocs descriptors need updating and wait for confirmation.\n- **auto** \u2014 update the relevant xdocs descriptors immediately.\n\nUse the xdocs CLI for operations: `xdocs scan`, `xdocs tree`, `xdocs generate`,\n`xdocs list`, `xdocs merge`.\n<!-- END XDOCS -->";
|
|
42
42
|
type SkillPathOptions = {
|
|
43
43
|
cwd?: string;
|
|
44
44
|
homeDirectory?: string;
|
package/library/agents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../source/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,EACvB,eAAe,EAChB,MAAM,YAAY,CAAA;AAInB,+CAA+C;AAC/C,eAAO,MAAM,cAAc,kBAAkB,CAAA;AAE7C,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAuB,CAAA;AAE1E;;iEAEiE;AACjE,eAAO,MAAM,iBAAiB,EAAE,MAS5B,CAAA;AAEJ,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,oBAAsC,CAAA;AAEpE,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,SAAS,cAAc,EAAyB,CAAA;AAE9E,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,EAAE,cAAyB,CAAA;AAEzD,2FAA2F;AAC3F,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,cAAc,EAKzE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,cAAc,EAK5D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,cAAc,EAChC,CAAA;AAkB9D,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../source/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,EACvB,eAAe,EAChB,MAAM,YAAY,CAAA;AAInB,+CAA+C;AAC/C,eAAO,MAAM,cAAc,kBAAkB,CAAA;AAE7C,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAuB,CAAA;AAE1E;;iEAEiE;AACjE,eAAO,MAAM,iBAAiB,EAAE,MAS5B,CAAA;AAEJ,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,oBAAsC,CAAA;AAEpE,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,SAAS,cAAc,EAAyB,CAAA;AAE9E,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,EAAE,cAAyB,CAAA;AAEzD,2FAA2F;AAC3F,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,cAAc,EAKzE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,cAAc,EAK5D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,cAAc,EAChC,CAAA;AAkB9D,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,w1CAwBV,CAAA;AAErB,KAAK,gBAAgB,GAAG;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,KAAK,mBAAmB,GAAG,gBAAgB,GAAG;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,KAAK,sBAAsB,GAAG,eAAe,GAAG;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,GAAI,MAAM,cAAc,EAAE,OAAO,eAAe,EAAE,UAAS,gBAAqB,KAAG,MACnD,CAAA;AAO7D,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,GAAI,MAAM,cAAc,EAAE,OAAO,eAAe,EAAE,UAAS,gBAAqB,KAAG,OAC5D,CAAA;AAEpD,kEAAkE;AAClE,eAAO,MAAM,YAAY,GACvB,MAAM,cAAc,EACpB,OAAO,eAAe,EACtB,UAAS,mBAAwB,KAChC,OAAO,CAAC,uBAAuB,CA6BjC,CAAA;AAED,mDAAmD;AACnD,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,cAAc,EAAE,EAChC,OAAO,eAAe,EACtB,UAAS,mBAAwB,KAChC,OAAO,CAAC,uBAAuB,EAAE,CAInC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GAAU,KAAK,MAAM,EAAE,gBAAc,KAAG,OAAO,CAAC,6BAA6B,CAkBjH,CAAA;AA4BD,sDAAsD;AACtD,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAWrD,CAAA;AAED,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,GAAU,SAAS,eAAe,KAAG,OAAO,CAAC,kBAAkB,CAI/F,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,sBAAsB,EAC/B,SAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe,KAC3C,OAAO,CAAC,0BAA0B,CAgBpC,CAAA;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE"}
|
package/library/agents.js
CHANGED
|
@@ -86,18 +86,22 @@ export const xdocsAgentsSection = `${AGENTS_BEGIN_MARKER}
|
|
|
86
86
|
|
|
87
87
|
This project uses **xdocs** (\`@guiho/xdocs\`) for structured, machine-readable
|
|
88
88
|
documentation. The repository has one root \`XDOCS.md\` index (no frontmatter),
|
|
89
|
-
and each package/application has a root
|
|
90
|
-
|
|
91
|
-
\`
|
|
89
|
+
and each package/application has a root named \`*.xdocs.md\` descriptor file. Each
|
|
90
|
+
documented module has exactly one named \`*.xdocs.md\` descriptor in its directory
|
|
91
|
+
with YAML frontmatter (\`subject\`, \`description\`, \`parent\`, \`children\`,
|
|
92
|
+
\`files\`, \`documents\`, \`tags\`, \`keywords\`, \`flags\`). Same-directory plain
|
|
93
|
+
\`*.md\` files are companion documents and must be listed in the descriptor's
|
|
94
|
+
\`documents\` metadata map. Ordinary companion documents should also include
|
|
95
|
+
\`keywords\` in their own frontmatter.
|
|
92
96
|
|
|
93
97
|
**Load the \`${xdocsSkillName}\` agent skill** for any documentation work:
|
|
94
|
-
creating, updating, regenerating, scanning, merging, or navigating xdocs
|
|
98
|
+
creating, updating, regenerating, scanning, merging, or navigating xdocs descriptors.
|
|
95
99
|
The skill holds the full workflow, metadata schema, and CLI reference.
|
|
96
100
|
|
|
97
101
|
Before changing documentation, read \`xdocs.config.toml\` and respect \`[ai].mode\`:
|
|
98
102
|
|
|
99
|
-
- **prompt** — announce which xdocs
|
|
100
|
-
- **auto** — update the relevant xdocs
|
|
103
|
+
- **prompt** — announce which xdocs descriptors need updating and wait for confirmation.
|
|
104
|
+
- **auto** — update the relevant xdocs descriptors immediately.
|
|
101
105
|
|
|
102
106
|
Use the xdocs CLI for operations: \`xdocs scan\`, \`xdocs tree\`, \`xdocs generate\`,
|
|
103
107
|
\`xdocs list\`, \`xdocs merge\`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../source/commands/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../source/commands/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAa,eAAe,EAAE,MAAM,aAAa,CAAA;AAM9E,gCAAgC;AAChC,eAAO,MAAM,WAAW,GAAU,SAAS,eAAe,EAAE,QAAQ,eAAe,KAAG,OAAO,CAAC,IAAI,CA2BjG,CAAA"}
|
|
@@ -55,6 +55,9 @@ const generateProjectDoc = async (projectName, xdocsFiles, _cwd) => {
|
|
|
55
55
|
lines.push(`### ${file.metadata.subject}`, '');
|
|
56
56
|
lines.push(file.metadata.description, '');
|
|
57
57
|
lines.push(`Location: \`${file.relativePath}\``, '');
|
|
58
|
+
if (file.metadata.keywords.length > 0) {
|
|
59
|
+
lines.push(`Keywords: ${file.metadata.keywords.map((keyword) => `\`${keyword}\``).join(', ')}`, '');
|
|
60
|
+
}
|
|
58
61
|
const fileEntries = Object.entries(file.metadata.files);
|
|
59
62
|
if (fileEntries.length > 0) {
|
|
60
63
|
lines.push('Files:', '');
|
|
@@ -63,6 +66,14 @@ const generateProjectDoc = async (projectName, xdocsFiles, _cwd) => {
|
|
|
63
66
|
}
|
|
64
67
|
lines.push('');
|
|
65
68
|
}
|
|
69
|
+
const documentEntries = Object.entries(file.metadata.documents);
|
|
70
|
+
if (documentEntries.length > 0) {
|
|
71
|
+
lines.push('Documents:', '');
|
|
72
|
+
for (const [name, desc] of documentEntries) {
|
|
73
|
+
lines.push(`- \`${name}\`: ${desc}`);
|
|
74
|
+
}
|
|
75
|
+
lines.push('');
|
|
76
|
+
}
|
|
66
77
|
if (file.body.trim()) {
|
|
67
78
|
lines.push(file.body.trim(), '');
|
|
68
79
|
}
|
|
@@ -90,6 +101,9 @@ const generateModuleDoc = async (moduleName, xdocsFiles, _cwd, targetPath) => {
|
|
|
90
101
|
continue;
|
|
91
102
|
lines.push(`## ${file.metadata.subject}`, '');
|
|
92
103
|
lines.push(file.metadata.description, '');
|
|
104
|
+
if (file.metadata.keywords.length > 0) {
|
|
105
|
+
lines.push(`Keywords: ${file.metadata.keywords.map((keyword) => `\`${keyword}\``).join(', ')}`, '');
|
|
106
|
+
}
|
|
93
107
|
const fileEntries = Object.entries(file.metadata.files);
|
|
94
108
|
if (fileEntries.length > 0) {
|
|
95
109
|
lines.push('### Files', '');
|
|
@@ -98,6 +112,14 @@ const generateModuleDoc = async (moduleName, xdocsFiles, _cwd, targetPath) => {
|
|
|
98
112
|
}
|
|
99
113
|
lines.push('');
|
|
100
114
|
}
|
|
115
|
+
const documentEntries = Object.entries(file.metadata.documents);
|
|
116
|
+
if (documentEntries.length > 0) {
|
|
117
|
+
lines.push('### Documents', '');
|
|
118
|
+
for (const [name, desc] of documentEntries) {
|
|
119
|
+
lines.push(`- \`${name}\`: ${desc}`);
|
|
120
|
+
}
|
|
121
|
+
lines.push('');
|
|
122
|
+
}
|
|
101
123
|
if (file.metadata.children.length > 0) {
|
|
102
124
|
lines.push('### Submodules', '');
|
|
103
125
|
for (const child of file.metadata.children) {
|
|
@@ -111,7 +133,7 @@ const generateModuleDoc = async (moduleName, xdocsFiles, _cwd, targetPath) => {
|
|
|
111
133
|
}
|
|
112
134
|
}
|
|
113
135
|
else {
|
|
114
|
-
lines.push(`No xdocs
|
|
136
|
+
lines.push(`No xdocs descriptors found in this directory.`, '');
|
|
115
137
|
lines.push('### Directory contents', '');
|
|
116
138
|
for (const entry of dirEntries) {
|
|
117
139
|
lines.push(`- \`${entry}\``);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../source/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAInE,4BAA4B;AAC5B,eAAO,MAAM,OAAO,GAAU,SAAS,eAAe,EAAE,QAAQ,eAAe,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../source/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAInE,4BAA4B;AAC5B,eAAO,MAAM,OAAO,GAAU,SAAS,eAAe,EAAE,QAAQ,eAAe,KAAG,OAAO,CAAC,IAAI,CAsD7F,CAAA"}
|
package/library/commands/list.js
CHANGED
|
@@ -10,13 +10,22 @@ export const runList = async (options, parsed) => {
|
|
|
10
10
|
const targetPath = parsed.positionals[0] ? resolve(options.cwd, parsed.positionals[0]) : options.cwd;
|
|
11
11
|
const result = await scanProject(config);
|
|
12
12
|
const relevantFiles = result.xdocsFiles.filter((f) => f.path.startsWith(targetPath));
|
|
13
|
-
// Collect all files
|
|
13
|
+
// Collect all source files and Markdown companion documents from metadata.
|
|
14
14
|
const fileList = [];
|
|
15
15
|
for (const xdocsFile of relevantFiles) {
|
|
16
16
|
if (!xdocsFile.metadata)
|
|
17
17
|
continue;
|
|
18
18
|
for (const [fileName, description] of Object.entries(xdocsFile.metadata.files)) {
|
|
19
19
|
fileList.push({
|
|
20
|
+
kind: 'file',
|
|
21
|
+
file: fileName,
|
|
22
|
+
description,
|
|
23
|
+
source: xdocsFile.relativePath,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
for (const [fileName, description] of Object.entries(xdocsFile.metadata.documents)) {
|
|
27
|
+
fileList.push({
|
|
28
|
+
kind: 'document',
|
|
20
29
|
file: fileName,
|
|
21
30
|
description,
|
|
22
31
|
source: xdocsFile.relativePath,
|
|
@@ -29,13 +38,14 @@ export const runList = async (options, parsed) => {
|
|
|
29
38
|
}
|
|
30
39
|
if (fileList.length === 0) {
|
|
31
40
|
const scope = targetPath === options.cwd ? 'project' : relative(options.cwd, targetPath);
|
|
32
|
-
process.stdout.write(`No documented files found in ${scope}.\n`);
|
|
41
|
+
process.stdout.write(`No documented files or documents found in ${scope}.\n`);
|
|
33
42
|
return;
|
|
34
43
|
}
|
|
35
44
|
const scope = targetPath === options.cwd ? 'project' : relative(options.cwd, targetPath);
|
|
36
|
-
process.stdout.write(`\
|
|
45
|
+
process.stdout.write(`\nentries in ${scope}:\n\n`);
|
|
37
46
|
for (const entry of fileList) {
|
|
38
|
-
|
|
47
|
+
const label = entry.kind === 'document' ? 'document' : 'file';
|
|
48
|
+
process.stdout.write(` ${label} ${entry.file}: ${entry.description}\n`);
|
|
39
49
|
}
|
|
40
50
|
process.stdout.write('\n');
|
|
41
51
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../source/commands/merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKnE,6BAA6B;AAC7B,eAAO,MAAM,QAAQ,GAAU,SAAS,eAAe,EAAE,QAAQ,eAAe,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../source/commands/merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKnE,6BAA6B;AAC7B,eAAO,MAAM,QAAQ,GAAU,SAAS,eAAe,EAAE,QAAQ,eAAe,KAAG,OAAO,CAAC,IAAI,CAsE9F,CAAA"}
|
|
@@ -14,7 +14,7 @@ export const runMerge = async (options, parsed) => {
|
|
|
14
14
|
const result = await scanProject(config);
|
|
15
15
|
const relevantFiles = result.xdocsFiles.filter((f) => f.path.startsWith(targetPath));
|
|
16
16
|
if (relevantFiles.length === 0) {
|
|
17
|
-
process.stdout.write('No xdocs
|
|
17
|
+
process.stdout.write('No xdocs descriptors found in the specified path.\n');
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
const lines = [];
|
|
@@ -23,6 +23,9 @@ export const runMerge = async (options, parsed) => {
|
|
|
23
23
|
if (file.metadata) {
|
|
24
24
|
lines.push(`# ${file.metadata.subject}`, '');
|
|
25
25
|
lines.push(file.metadata.description, '');
|
|
26
|
+
if (file.metadata.keywords.length > 0) {
|
|
27
|
+
lines.push(`Keywords: ${file.metadata.keywords.map((keyword) => `\`${keyword}\``).join(', ')}`, '');
|
|
28
|
+
}
|
|
26
29
|
const fileEntries = Object.entries(file.metadata.files);
|
|
27
30
|
if (fileEntries.length > 0) {
|
|
28
31
|
lines.push('## Files', '');
|
|
@@ -31,6 +34,14 @@ export const runMerge = async (options, parsed) => {
|
|
|
31
34
|
}
|
|
32
35
|
lines.push('');
|
|
33
36
|
}
|
|
37
|
+
const documentEntries = Object.entries(file.metadata.documents);
|
|
38
|
+
if (documentEntries.length > 0) {
|
|
39
|
+
lines.push('## Documents', '');
|
|
40
|
+
for (const [name, desc] of documentEntries) {
|
|
41
|
+
lines.push(`- \`${name}\`: ${desc}`);
|
|
42
|
+
}
|
|
43
|
+
lines.push('');
|
|
44
|
+
}
|
|
34
45
|
if (file.metadata.children.length > 0) {
|
|
35
46
|
lines.push('## Submodules', '');
|
|
36
47
|
for (const child of file.metadata.children) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../source/commands/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAInE,4BAA4B;AAC5B,eAAO,MAAM,OAAO,GAAU,SAAS,eAAe,EAAE,SAAS,eAAe,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../source/commands/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAInE,4BAA4B;AAC5B,eAAO,MAAM,OAAO,GAAU,SAAS,eAAe,EAAE,SAAS,eAAe,KAAG,OAAO,CAAC,IAAI,CAiE9F,CAAA"}
|
package/library/commands/scan.js
CHANGED
|
@@ -11,25 +11,31 @@ export const runScan = async (options, _parsed) => {
|
|
|
11
11
|
process.stdout.write(JSON.stringify({
|
|
12
12
|
totalFiles: result.totalFiles,
|
|
13
13
|
totalDirectories: result.totalDirectories,
|
|
14
|
+
totalMarkdownDocuments: result.totalMarkdownDocuments,
|
|
14
15
|
coveredDirectories: result.coveredDirectories,
|
|
15
16
|
uncoveredDirectories: result.uncoveredDirectories,
|
|
16
17
|
xdocsFiles: result.xdocsFiles.map((f) => ({
|
|
17
18
|
path: f.relativePath,
|
|
18
19
|
valid: f.valid,
|
|
19
20
|
subject: f.metadata?.subject ?? null,
|
|
21
|
+
keywords: f.metadata?.keywords ?? null,
|
|
22
|
+
documents: f.metadata?.documents ?? null,
|
|
23
|
+
discoveredDocuments: f.documents.map((document) => document.relativePath),
|
|
20
24
|
errors: f.errors,
|
|
21
25
|
})),
|
|
26
|
+
markdownDocuments: result.markdownDocuments.map((document) => document.relativePath),
|
|
22
27
|
uncoveredPaths: result.uncoveredPaths,
|
|
23
28
|
}, null, 2) + '\n');
|
|
24
29
|
return;
|
|
25
30
|
}
|
|
26
31
|
process.stdout.write(`\nxdocs scan\n\n`);
|
|
27
|
-
process.stdout.write(`
|
|
32
|
+
process.stdout.write(`descriptor extension: ${config.extensions.supported.join(', ')}\n`);
|
|
28
33
|
process.stdout.write(`total files scanned: ${result.totalFiles}\n`);
|
|
29
34
|
process.stdout.write(`total directories: ${result.totalDirectories}\n`);
|
|
35
|
+
process.stdout.write(`markdown documents found: ${result.totalMarkdownDocuments}\n`);
|
|
30
36
|
process.stdout.write(`covered directories: ${result.coveredDirectories}\n`);
|
|
31
37
|
process.stdout.write(`uncovered directories: ${result.uncoveredDirectories}\n`);
|
|
32
|
-
process.stdout.write(`xdocs
|
|
38
|
+
process.stdout.write(`xdocs descriptors found: ${result.xdocsFiles.length}\n`);
|
|
33
39
|
if (result.xdocsFiles.length > 0) {
|
|
34
40
|
process.stdout.write(`\nfiles:\n`);
|
|
35
41
|
for (const file of result.xdocsFiles) {
|
|
@@ -42,6 +48,11 @@ export const runScan = async (options, _parsed) => {
|
|
|
42
48
|
process.stdout.write(` error: ${error}\n`);
|
|
43
49
|
}
|
|
44
50
|
}
|
|
51
|
+
if (options.verbose && file.documents.length > 0) {
|
|
52
|
+
for (const document of file.documents) {
|
|
53
|
+
process.stdout.write(` document: ${document.name}\n`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
45
56
|
}
|
|
46
57
|
}
|
|
47
58
|
if (options.verbose && result.uncoveredPaths.length > 0) {
|
package/library/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../source/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAA+B,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAU/H,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,EAAE,kBAIpC,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,GAAI,KAAK,cAAc,CAAC,QAAQ,CAAC,KAAG,kBAgBtE,CAAA;AAQD,2CAA2C;AAC3C,eAAO,MAAM,cAAc,GAAU,KAAK,MAAM,EAAE,eAAe,MAAM,KAAG,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,cAAc,CAAA;CAAE,CAaxH,CAAA;AAED,kDAAkD;AAClD,eAAO,MAAM,UAAU,GAAU,SAAS,eAAe,KAAG,OAAO,CAAC,WAAW,CAS9E,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,GAAU,SAAS,eAAe,KAAG,OAAO,CAAC,WAAW,CAOxF,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,eAAe,GAAI,KAAK,cAAc,EAAE,KAAK,MAAM,EAAE,aAAa,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../source/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAA+B,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAU/H,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,EAAE,kBAIpC,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,GAAI,KAAK,cAAc,CAAC,QAAQ,CAAC,KAAG,kBAgBtE,CAAA;AAQD,2CAA2C;AAC3C,eAAO,MAAM,cAAc,GAAU,KAAK,MAAM,EAAE,eAAe,MAAM,KAAG,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,cAAc,CAAA;CAAE,CAaxH,CAAA;AAED,kDAAkD;AAClD,eAAO,MAAM,UAAU,GAAU,SAAS,eAAe,KAAG,OAAO,CAAC,WAAW,CAS9E,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,GAAU,SAAS,eAAe,KAAG,OAAO,CAAC,WAAW,CAOxF,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,eAAe,GAAI,KAAK,cAAc,EAAE,KAAK,MAAM,EAAE,aAAa,MAAM,KAAG,WAkCvF,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,WAQ1C,CAAA;AAEF,sDAAsD;AACtD,eAAO,MAAM,0BAA0B,GAAI,KAAK,MAAM,KAAG,MAsBxD,CAAA;AAED,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,GAAU,KAAK,MAAM,EAAE,mBAAiB,KAAG,OAAO,CAAC,MAAM,CASvF,CAAA;AAuBD,sDAAsD;AACtD,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,WACP,CAAA"}
|
package/library/config.js
CHANGED
|
@@ -5,7 +5,7 @@ import { existsSync } from 'node:fs';
|
|
|
5
5
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
6
6
|
import { basename, isAbsolute, resolve } from 'node:path';
|
|
7
7
|
import { XDocsError } from './errors.js';
|
|
8
|
-
const DEFAULT_EXTENSIONS = ['.
|
|
8
|
+
const DEFAULT_EXTENSIONS = ['.xdocs.md'];
|
|
9
9
|
const DEFAULT_EXCLUDE = ['node_modules', '.git', 'dist', 'build', 'library', 'bin', 'bundle'];
|
|
10
10
|
const DEFAULT_AI_MODE = 'prompt';
|
|
11
11
|
const CONFIG_FILENAME = 'xdocs.config.toml';
|
|
@@ -83,6 +83,10 @@ export const normalizeConfig = (raw, cwd, configPath) => {
|
|
|
83
83
|
if (!Array.isArray(extensions) || extensions.some((ext) => typeof ext !== 'string')) {
|
|
84
84
|
throw new XDocsError('Invalid extensions.supported. Expected an array of strings.');
|
|
85
85
|
}
|
|
86
|
+
const normalizedExtensions = extensions.map((ext) => ext.toLowerCase());
|
|
87
|
+
if (normalizedExtensions.length !== 1 || normalizedExtensions[0] !== '.xdocs.md') {
|
|
88
|
+
throw new XDocsError('Invalid extensions.supported. xdocs supports only named "*.xdocs.md" descriptor files.');
|
|
89
|
+
}
|
|
86
90
|
const exclude = raw.scan?.exclude ?? DEFAULT_EXCLUDE;
|
|
87
91
|
if (!Array.isArray(exclude) || exclude.some((dir) => typeof dir !== 'string')) {
|
|
88
92
|
throw new XDocsError('Invalid scan.exclude. Expected an array of strings.');
|
|
@@ -91,7 +95,7 @@ export const normalizeConfig = (raw, cwd, configPath) => {
|
|
|
91
95
|
schema: 1,
|
|
92
96
|
cwd,
|
|
93
97
|
configPath,
|
|
94
|
-
extensions: { supported:
|
|
98
|
+
extensions: { supported: DEFAULT_EXTENSIONS },
|
|
95
99
|
ai: { mode: aiMode ?? DEFAULT_AI_MODE },
|
|
96
100
|
scan: { exclude },
|
|
97
101
|
project: { name: raw.project?.name ?? basename(cwd) },
|
|
@@ -114,7 +118,7 @@ export const createDefaultConfigContent = (cwd) => {
|
|
|
114
118
|
return `schema = 1
|
|
115
119
|
|
|
116
120
|
[extensions]
|
|
117
|
-
supported = [".
|
|
121
|
+
supported = [".xdocs.md"]
|
|
118
122
|
|
|
119
123
|
[ai]
|
|
120
124
|
mode = "prompt"
|
package/library/discovery.d.ts
CHANGED
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
* @copyright Copyright (c) 2026 GUIHO Technologies as represented by Cristóvão GUIHO. All Rights Reserved.
|
|
3
3
|
*/
|
|
4
4
|
import type { XDocsConfig, XDocsFile, XDocsScanResult } from './types.js';
|
|
5
|
-
/** Scan the project for xdocs files
|
|
5
|
+
/** Scan the project for xdocs descriptor files and sibling Markdown documents. */
|
|
6
6
|
export declare const scanProject: (config: XDocsConfig) => Promise<XDocsScanResult>;
|
|
7
|
-
/** Check if a file path
|
|
8
|
-
export declare const isXDocsFile: (filePath: string,
|
|
9
|
-
/**
|
|
7
|
+
/** Check if a file path is a root index or xdocs descriptor file. */
|
|
8
|
+
export declare const isXDocsFile: (filePath: string, _extensions?: string[]) => boolean;
|
|
9
|
+
/** Check if a file path is an xdocs module descriptor. */
|
|
10
|
+
export declare const isXDocsDescriptorFile: (filePath: string) => boolean;
|
|
11
|
+
/** Check if a file path is a companion Markdown document, not an xdocs descriptor. */
|
|
12
|
+
export declare const isPlainMarkdownDocument: (filePath: string) => boolean;
|
|
13
|
+
/** Scan a specific directory (not recursive) for xdocs descriptors. */
|
|
10
14
|
export declare const scanDirectory: (dirPath: string, config: XDocsConfig) => Promise<XDocsFile[]>;
|
|
11
15
|
/** List all files in a directory (non-recursive). */
|
|
12
16
|
export declare const listDirectoryFiles: (dirPath: string, config: XDocsConfig) => Promise<string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../source/discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../source/discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAyB,eAAe,EAAE,MAAM,YAAY,CAAA;AAMhG,kFAAkF;AAClF,eAAO,MAAM,WAAW,GAAU,QAAQ,WAAW,KAAG,OAAO,CAAC,eAAe,CA4D9E,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,EAAE,cAAa,MAAM,EAAiC,KAAG,OACtB,CAAA;AAE/E,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,OACc,CAAA;AAEvE,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,KAAG,OAI1D,CAAA;AAmCD,uEAAuE;AACvE,eAAO,MAAM,aAAa,GAAU,SAAS,MAAM,EAAE,QAAQ,WAAW,KAAG,OAAO,CAAC,SAAS,EAAE,CA6B7F,CAAA;AAED,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,GAAU,SAAS,MAAM,EAAE,QAAQ,WAAW,KAAG,OAAO,CAAC,MAAM,EAAE,CAiB/F,CAAA"}
|