@canonical/pragma-cli 0.38.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/package.json +14 -14
- package/dist/pragma.conf.js +273 -176
- package/dist/pragma.conf.js.map +1 -1
- package/dist/src/capabilities/capabilities/capabilities.verb.js +2 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -1
- package/dist/src/capabilities/capabilities/catalog.js +47 -51
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -1
- package/dist/src/capabilities/capabilities/index.js +2 -0
- package/dist/src/capabilities/capabilities/index.js.map +1 -1
- package/dist/src/capabilities/capabilities/types.js +5 -5
- package/dist/src/capabilities/colophon/colophon.render.js +7 -4
- package/dist/src/capabilities/colophon/colophon.render.js.map +1 -1
- package/dist/src/capabilities/colophon/colophon.verb.js +1 -0
- package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -1
- package/dist/src/capabilities/config/get.verb.js +2 -0
- package/dist/src/capabilities/config/get.verb.js.map +1 -1
- package/dist/src/capabilities/config/runField.js +2 -2
- package/dist/src/capabilities/config/runField.js.map +1 -1
- package/dist/src/capabilities/config/set.verb.js +2 -0
- package/dist/src/capabilities/config/set.verb.js.map +1 -1
- package/dist/src/capabilities/config/show.verb.js +1 -0
- package/dist/src/capabilities/config/show.verb.js.map +1 -1
- package/dist/src/capabilities/config/unset.verb.js +2 -0
- package/dist/src/capabilities/config/unset.verb.js.map +1 -1
- package/dist/src/capabilities/create/constants.js +2 -2
- package/dist/src/capabilities/create/create.verb.js +14 -4
- package/dist/src/capabilities/create/create.verb.js.map +1 -1
- package/dist/src/capabilities/distribution.js +3 -1
- package/dist/src/capabilities/distribution.js.map +1 -1
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +10 -2
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -1
- package/dist/src/capabilities/doctor/doctor.verb.js +2 -0
- package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -1
- package/dist/src/capabilities/graph/connect.verb.js +2 -0
- package/dist/src/capabilities/graph/connect.verb.js.map +1 -1
- package/dist/src/capabilities/graph/inspect.render.js +7 -1
- package/dist/src/capabilities/graph/inspect.render.js.map +1 -1
- package/dist/src/capabilities/graph/inspect.verb.js +2 -0
- package/dist/src/capabilities/graph/inspect.verb.js.map +1 -1
- package/dist/src/capabilities/graph/query.render.js +37 -5
- package/dist/src/capabilities/graph/query.render.js.map +1 -1
- package/dist/src/capabilities/graph/query.verb.js +2 -0
- package/dist/src/capabilities/graph/query.verb.js.map +1 -1
- package/dist/src/capabilities/graph/queryText.js +28 -0
- package/dist/src/capabilities/graph/queryText.js.map +1 -1
- package/dist/src/capabilities/graph/runConnect.js +3 -3
- package/dist/src/capabilities/graph/runConnect.js.map +1 -1
- package/dist/src/capabilities/graph/runQuery.js +8 -6
- package/dist/src/capabilities/graph/runQuery.js.map +1 -1
- package/dist/src/capabilities/info/info.verb.js +2 -0
- package/dist/src/capabilities/info/info.verb.js.map +1 -1
- package/dist/src/capabilities/meta/mcp.verb.js +1 -0
- package/dist/src/capabilities/meta/mcp.verb.js.map +1 -1
- package/dist/src/capabilities/ontology/verbs.js +7 -10
- package/dist/src/capabilities/ontology/verbs.js.map +1 -1
- package/dist/src/capabilities/prompt/verbs.js +5 -4
- package/dist/src/capabilities/prompt/verbs.js.map +1 -1
- package/dist/src/capabilities/resources/provider.js +6 -3
- package/dist/src/capabilities/resources/provider.js.map +1 -1
- package/dist/src/capabilities/setup/setup.verb.js +13 -5
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -1
- package/dist/src/capabilities/shared/calls.js +16 -0
- package/dist/src/capabilities/shared/calls.js.map +1 -0
- package/dist/src/capabilities/skill/render.js +7 -5
- package/dist/src/capabilities/skill/render.js.map +1 -1
- package/dist/src/capabilities/skill/verbs.js +5 -4
- package/dist/src/capabilities/skill/verbs.js.map +1 -1
- package/dist/src/capabilities/sources/collectStatus.js +6 -1
- package/dist/src/capabilities/sources/collectStatus.js.map +1 -1
- package/dist/src/capabilities/sources/index.js +4 -3
- package/dist/src/capabilities/sources/index.js.map +1 -1
- package/dist/src/capabilities/sources/reset.render.js +37 -0
- package/dist/src/capabilities/sources/reset.render.js.map +1 -0
- package/dist/src/capabilities/sources/reset.verb.js +51 -0
- package/dist/src/capabilities/sources/reset.verb.js.map +1 -0
- package/dist/src/capabilities/sources/runReset.js +59 -0
- package/dist/src/capabilities/sources/runReset.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +7 -6
- package/dist/src/capabilities/sources/runUpdate.js.map +1 -1
- package/dist/src/capabilities/sources/status.render.js +24 -8
- package/dist/src/capabilities/sources/status.render.js.map +1 -1
- package/dist/src/capabilities/sources/status.verb.js +1 -0
- package/dist/src/capabilities/sources/status.verb.js.map +1 -1
- package/dist/src/capabilities/sources/update.verb.js +2 -0
- package/dist/src/capabilities/sources/update.verb.js.map +1 -1
- package/dist/src/capabilities/upgrade/upgrade.verb.js +1 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -1
- package/dist/src/capabilities/version/version.verb.js +1 -0
- package/dist/src/capabilities/version/version.verb.js.map +1 -1
- package/dist/src/constants.js +4 -3
- package/dist/src/constants.js.map +1 -1
- package/dist/src/kernel/error/index.js +1 -1
- package/dist/src/kernel/error/index.js.map +1 -1
- package/dist/src/kernel/error/recovery.js +24 -42
- package/dist/src/kernel/error/recovery.js.map +1 -1
- package/dist/src/kernel/packs/collect.js +123 -9
- package/dist/src/kernel/packs/collect.js.map +1 -1
- package/dist/src/kernel/packs/compile.js +74 -15
- package/dist/src/kernel/packs/compile.js.map +1 -1
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +3 -3
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -1
- package/dist/src/kernel/packs/iri.js +2 -4
- package/dist/src/kernel/packs/iri.js.map +1 -1
- package/dist/src/kernel/packs/renderPack.js +90 -50
- package/dist/src/kernel/packs/renderPack.js.map +1 -1
- package/dist/src/kernel/packs/resolveEntity.js +202 -90
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -1
- package/dist/src/kernel/packs/runBodies.js +89 -30
- package/dist/src/kernel/packs/runBodies.js.map +1 -1
- package/dist/src/kernel/packs/schema.js +66 -12
- package/dist/src/kernel/packs/schema.js.map +1 -1
- package/dist/src/kernel/packs/sparql/buildListQuery.js +80 -13
- package/dist/src/kernel/packs/sparql/buildListQuery.js.map +1 -1
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +41 -13
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -1
- package/dist/src/kernel/packs/sparql/filterValues.js +32 -23
- package/dist/src/kernel/packs/sparql/filterValues.js.map +1 -1
- package/dist/src/kernel/packs/sparql/runSelect.js +3 -5
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -1
- package/dist/src/kernel/packs/storyRules.js +31 -4
- package/dist/src/kernel/packs/storyRules.js.map +1 -1
- package/dist/src/kernel/packs/tierScope.js +3 -3
- package/dist/src/kernel/packs/tierScope.js.map +1 -1
- package/dist/src/kernel/packs/types.js +4 -0
- package/dist/src/kernel/packs/types.js.map +1 -1
- package/dist/src/kernel/project/cli/buildProgram.js +4 -0
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -1
- package/dist/src/kernel/project/cli/dispatch.js +32 -8
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -1
- package/dist/src/kernel/project/cli/suggestNames.js +44 -1
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -1
- package/dist/src/kernel/project/cli/verbHelp.js +17 -18
- package/dist/src/kernel/project/cli/verbHelp.js.map +1 -1
- package/dist/src/kernel/project/mcp/buildServer.js +11 -4
- package/dist/src/kernel/project/mcp/buildServer.js.map +1 -1
- package/dist/src/kernel/project/mcp/envelope.js +3 -2
- package/dist/src/kernel/project/mcp/envelope.js.map +1 -1
- package/dist/src/kernel/project/mcp/instructions.js +101 -31
- package/dist/src/kernel/project/mcp/instructions.js.map +1 -1
- package/dist/src/kernel/project/mcp/registerVerb.js +59 -23
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -1
- package/dist/src/kernel/render/renderers.js +3 -3
- package/dist/src/kernel/render/turtle.js +21 -4
- package/dist/src/kernel/render/turtle.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/build.js +54 -1
- package/dist/src/kernel/runtime/graphpack/build.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/manifest.js +14 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/read.js +3 -5
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/schemas.js +1 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -1
- package/dist/src/kernel/runtime/loadSession.js +8 -1
- package/dist/src/kernel/runtime/loadSession.js.map +1 -1
- package/dist/src/kernel/runtime/packVersion.js +75 -0
- package/dist/src/kernel/runtime/packVersion.js.map +1 -0
- package/dist/src/kernel/runtime/readEntity.js +43 -4
- package/dist/src/kernel/runtime/readEntity.js.map +1 -1
- package/dist/src/kernel/runtime/resolveSources.js +61 -9
- package/dist/src/kernel/runtime/resolveSources.js.map +1 -1
- package/dist/src/kernel/runtime/storeReadiness.js +3 -2
- package/dist/src/kernel/runtime/storeReadiness.js.map +1 -1
- package/dist/src/kernel/spec/call.js +167 -0
- package/dist/src/kernel/spec/call.js.map +1 -0
- package/dist/src/kernel/spec/emitReference.js +9 -13
- package/dist/src/kernel/spec/emitReference.js.map +1 -1
- package/dist/src/kernel/spec/emitSurface.js +8 -1
- package/dist/src/kernel/spec/emitSurface.js.map +1 -1
- package/dist/src/kernel/spec/guidance.js +63 -0
- package/dist/src/kernel/spec/guidance.js.map +1 -0
- package/dist/src/kernel/spec/wireType.js +36 -0
- package/dist/src/kernel/spec/wireType.js.map +1 -0
- package/package.json +14 -14
- package/pragma.conf.ts +294 -177
- package/src/capabilities/block.parity.test.ts +1 -1
- package/src/capabilities/callRule.test.ts +147 -0
- package/src/capabilities/capabilities/capabilities.test.ts +47 -19
- package/src/capabilities/capabilities/capabilities.verb.ts +2 -0
- package/src/capabilities/capabilities/catalog.ts +60 -55
- package/src/capabilities/capabilities/index.ts +2 -0
- package/src/capabilities/capabilities/types.ts +16 -19
- package/src/capabilities/colophon/colophon.render.ts +9 -5
- package/src/capabilities/colophon/colophon.verb.ts +1 -0
- package/src/capabilities/config/get.verb.ts +2 -0
- package/src/capabilities/config/runField.ts +3 -3
- package/src/capabilities/config/set.verb.ts +3 -0
- package/src/capabilities/config/show.verb.ts +2 -0
- package/src/capabilities/config/unset.verb.ts +2 -0
- package/src/capabilities/create/constants.ts +2 -2
- package/src/capabilities/create/create.verb.ts +16 -0
- package/src/capabilities/create/createGrammar.test.ts +1 -1
- package/src/capabilities/distribution.test.ts +6 -3
- package/src/capabilities/distribution.ts +6 -0
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +14 -2
- package/src/capabilities/doctor/doctor.test.ts +38 -1
- package/src/capabilities/doctor/doctor.verb.ts +2 -0
- package/src/capabilities/emptyRecovery.test.ts +5 -0
- package/src/capabilities/graph/connect.verb.ts +2 -0
- package/src/capabilities/graph/inspect.render.ts +9 -1
- package/src/capabilities/graph/inspect.test.ts +73 -0
- package/src/capabilities/graph/inspect.verb.ts +2 -0
- package/src/capabilities/graph/query.render.test.ts +35 -0
- package/src/capabilities/graph/query.render.ts +45 -7
- package/src/capabilities/graph/query.shipped.exec.test.ts +44 -0
- package/src/capabilities/graph/query.verb.ts +2 -0
- package/src/capabilities/graph/queryText.test.ts +55 -1
- package/src/capabilities/graph/queryText.ts +47 -0
- package/src/capabilities/graph/runConnect.ts +4 -5
- package/src/capabilities/graph/runQuery.ts +23 -9
- package/src/capabilities/info/info.verb.ts +2 -0
- package/src/capabilities/links.shipped.exec.test.ts +398 -0
- package/src/capabilities/listBudget.shipped.exec.test.ts +2 -2
- package/src/capabilities/listLookup.shipped.exec.test.ts +122 -13
- package/src/capabilities/listQuery.shipped.exec.test.ts +39 -16
- package/src/capabilities/lookupBudget.shipped.exec.test.ts +208 -0
- package/src/capabilities/meta/mcp.verb.ts +2 -0
- package/src/capabilities/ontology/ontology.test.ts +24 -0
- package/src/capabilities/ontology/verbs.ts +16 -12
- package/src/capabilities/prompt/verbs.ts +10 -4
- package/src/capabilities/resources/provider.ts +7 -3
- package/src/capabilities/resources/resources.test.ts +2 -1
- package/src/capabilities/setup/setup.verb.ts +16 -0
- package/src/capabilities/shared/calls.ts +20 -0
- package/src/capabilities/skill/render.ts +9 -6
- package/src/capabilities/skill/verbs.ts +8 -4
- package/src/capabilities/sources/collectStatus.ts +6 -1
- package/src/capabilities/sources/index.ts +4 -3
- package/src/capabilities/sources/reset.render.test.ts +33 -0
- package/src/capabilities/sources/reset.render.ts +43 -0
- package/src/capabilities/sources/reset.verb.ts +59 -0
- package/src/capabilities/sources/runReset.ts +65 -0
- package/src/capabilities/sources/runUpdate.ts +12 -11
- package/src/capabilities/sources/sources.test.ts +158 -3
- package/src/capabilities/sources/status.render.test.ts +63 -1
- package/src/capabilities/sources/status.render.ts +25 -8
- package/src/capabilities/sources/status.verb.ts +2 -0
- package/src/capabilities/sources/types.ts +26 -0
- package/src/capabilities/sources/update.verb.ts +3 -0
- package/src/capabilities/surface.test.ts +2 -2
- package/src/capabilities/token.parity.test.ts +3 -2
- package/src/capabilities/tokenGraph.shipped.exec.test.ts +14 -2
- package/src/capabilities/upgrade/upgrade.verb.ts +1 -0
- package/src/capabilities/variable.parity.test.ts +2 -1
- package/src/capabilities/version/version.verb.ts +1 -0
- package/src/capabilities/wireContract.test.ts +110 -0
- package/src/constants.ts +4 -3
- package/src/kernel/copy.test.ts +1 -1
- package/src/kernel/error/PragmaError.test.ts +7 -3
- package/src/kernel/error/index.ts +1 -1
- package/src/kernel/error/recovery.test.ts +52 -18
- package/src/kernel/error/recovery.ts +25 -46
- package/src/kernel/error/types.ts +1 -1
- package/src/kernel/packs/collect.test.ts +79 -0
- package/src/kernel/packs/collect.ts +151 -11
- package/src/kernel/packs/compile.test.ts +107 -10
- package/src/kernel/packs/compile.ts +100 -11
- package/src/kernel/packs/filteredEmpty.test.ts +22 -5
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +5 -6
- package/src/kernel/packs/graphqlSource.test.ts +42 -0
- package/src/kernel/packs/iri.ts +5 -4
- package/src/kernel/packs/listNotice.test.ts +1 -1
- package/src/kernel/packs/nounLink.test.ts +385 -0
- package/src/kernel/packs/renderPack.ts +137 -57
- package/src/kernel/packs/resolveEntity.test.ts +170 -1
- package/src/kernel/packs/resolveEntity.ts +281 -101
- package/src/kernel/packs/runBodies.ts +133 -31
- package/src/kernel/packs/schema.ts +77 -12
- package/src/kernel/packs/sparql/buildListQuery.test.ts +78 -1
- package/src/kernel/packs/sparql/buildListQuery.ts +106 -16
- package/src/kernel/packs/sparql/buildLookupQuery.ts +44 -13
- package/src/kernel/packs/sparql/filterValues.test.ts +36 -4
- package/src/kernel/packs/sparql/filterValues.ts +50 -31
- package/src/kernel/packs/sparql/runSelect.ts +4 -6
- package/src/kernel/packs/storyRules.ts +37 -4
- package/src/kernel/packs/tierScope.test.ts +120 -6
- package/src/kernel/packs/tierScope.ts +5 -7
- package/src/kernel/packs/toolDescription.test.ts +59 -74
- package/src/kernel/packs/types.ts +93 -11
- package/src/kernel/project/cli/buildProgram.ts +4 -0
- package/src/kernel/project/cli/dispatch.ts +34 -8
- package/src/kernel/project/cli/suggest.test.ts +77 -0
- package/src/kernel/project/cli/suggestNames.ts +47 -1
- package/src/kernel/project/cli/verbHelp.ts +16 -19
- package/src/kernel/project/mcp/buildServer.ts +15 -4
- package/src/kernel/project/mcp/envelope.ts +3 -2
- package/src/kernel/project/mcp/instructions.ts +123 -35
- package/src/kernel/project/mcp/prompts/prompts.test.ts +136 -20
- package/src/kernel/project/mcp/registerVerb.test.ts +28 -0
- package/src/kernel/project/mcp/registerVerb.ts +67 -29
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +1 -1
- package/src/kernel/render/renderers.test.ts +2 -2
- package/src/kernel/render/renderers.ts +3 -3
- package/src/kernel/render/turtle.ts +24 -4
- package/src/kernel/runtime/graphpack/build.ts +58 -1
- package/src/kernel/runtime/graphpack/graphpack.test.ts +20 -0
- package/src/kernel/runtime/graphpack/manifest.ts +15 -0
- package/src/kernel/runtime/graphpack/read.ts +4 -6
- package/src/kernel/runtime/graphpack/schemas.ts +1 -0
- package/src/kernel/runtime/graphpack/types.ts +13 -0
- package/src/kernel/runtime/loadSession.ts +8 -1
- package/src/kernel/runtime/packVersion.test.ts +61 -0
- package/src/kernel/runtime/packVersion.ts +84 -0
- package/src/kernel/runtime/readEntity.ts +61 -6
- package/src/kernel/runtime/resolveSources.test.ts +90 -7
- package/src/kernel/runtime/resolveSources.ts +91 -10
- package/src/kernel/runtime/storeReadiness.ts +4 -4
- package/src/kernel/runtime/types.ts +12 -0
- package/src/kernel/spec/call.test.ts +95 -0
- package/src/kernel/spec/call.ts +186 -0
- package/src/kernel/spec/emitReference.ts +9 -13
- package/src/kernel/spec/emitSurface.ts +9 -1
- package/src/kernel/spec/guidance.test.ts +49 -0
- package/src/kernel/spec/guidance.ts +68 -0
- package/src/kernel/spec/index.ts +4 -0
- package/src/kernel/spec/surfaceConformance.test.ts +2 -2
- package/src/kernel/spec/types.ts +64 -7
- package/src/kernel/spec/wireType.ts +53 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +2 -1
- package/src/testing/behavioral/journeys.firstInstall.test.ts +72 -2
- package/src/testing/behavioral/parity.test.ts +40 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +1 -1
- package/src/testing/eval/cases/assembly.ts +4 -3
- package/src/testing/eval/cases/stable.ts +2 -3
- package/src/testing/helpers/callSchema.ts +40 -0
- package/src/testing/helpers/parity.ts +35 -2
- package/src/testing/setupCallChecking.ts +30 -0
- package/dist/src/capabilities/capabilities/hints.js +0 -223
- package/dist/src/capabilities/capabilities/hints.js.map +0 -1
- package/src/capabilities/capabilities/hints.ts +0 -266
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
* Reached only behind a dynamic import from the lookup run body, so its imports
|
|
20
20
|
* (including the GraphQL path) stay off the storeless fast path.
|
|
21
21
|
*/
|
|
22
|
-
import {
|
|
23
|
-
import { suggestNames } from "../project/cli/suggestNames.js";
|
|
22
|
+
import { callRecovery, PragmaError } from "../error/index.js";
|
|
23
|
+
import { MAX_SUGGESTIONS, suggestNames } from "../project/cli/suggestNames.js";
|
|
24
24
|
import { compactUri } from "../render/index.js";
|
|
25
25
|
import { activeExpands } from "./disclosure.js";
|
|
26
26
|
import { expandGlob, isGlobPattern } from "./glob.js";
|
|
@@ -28,36 +28,65 @@ import { fetchGraphqlLookup } from "./graphql/fetchGraphqlLookup.js";
|
|
|
28
28
|
import { isEmbeddableIri, resolveUri } from "./iri.js";
|
|
29
29
|
import { buildExpandQuery, buildIriResolveQuery, buildLookupByIriQuery, buildLookupIrisQuery, buildLookupNamesQuery, buildLookupQuery, buildNameResolveQuery, SCOPE_TIER_VARIABLE, } from "./sparql/buildLookupQuery.js";
|
|
30
30
|
import { runSelect } from "./sparql/runSelect.js";
|
|
31
|
+
import { localName } from "./tierScope.js";
|
|
31
32
|
import { expandIsSparql, } from "./types.js";
|
|
33
|
+
/**
|
|
34
|
+
* The most entities the patterns of ONE lookup may expand to (derivation in
|
|
35
|
+
* BUDGETS.md). Literal arguments are never counted or cut.
|
|
36
|
+
*/
|
|
37
|
+
export const GLOB_EXPANSION_CAP = 50;
|
|
38
|
+
/**
|
|
39
|
+
* Point a missed name at the noun's list — when it has one. A story may declare
|
|
40
|
+
* a lookup alone, and a recovery naming a `list` that does not exist is a dead
|
|
41
|
+
* end dressed as a way out.
|
|
42
|
+
*/
|
|
43
|
+
export function listRecovery(noun, hasList) {
|
|
44
|
+
return hasList
|
|
45
|
+
? callRecovery({ verb: `${noun} list` }, `List available ${noun} entries.`)
|
|
46
|
+
: { message: `Check the name: ${noun} entries cannot be listed.` };
|
|
47
|
+
}
|
|
32
48
|
/**
|
|
33
49
|
* Resolve a batch of lookup queries, collecting per-query failures.
|
|
34
50
|
*
|
|
35
51
|
* @throws PragmaError INVALID_INPUT when the batch is empty.
|
|
36
52
|
*/
|
|
37
|
-
export async function resolveLookup(rt, lookup, noun, queries, source, prefixes, level, scope) {
|
|
53
|
+
export async function resolveLookup(rt, lookup, noun, queries, source, prefixes, level, hasList, scope) {
|
|
38
54
|
if (queries.length === 0) {
|
|
39
55
|
throw PragmaError.invalidInput("names", "(empty)", {
|
|
40
|
-
recovery:
|
|
41
|
-
tool: `${noun}_list`,
|
|
42
|
-
// A concrete, valid argument bag rather than a bare tool name: an
|
|
43
|
-
// agent can call the recovery as written instead of guessing one.
|
|
44
|
-
params: {},
|
|
45
|
-
}),
|
|
56
|
+
recovery: listRecovery(noun, hasList),
|
|
46
57
|
});
|
|
47
58
|
}
|
|
48
|
-
|
|
59
|
+
// Read at most once per call, however many patterns and misses need it.
|
|
60
|
+
let pool;
|
|
61
|
+
const addressable = () => {
|
|
62
|
+
pool ??= listAddressable(rt, lookup, source, prefixes, scope?.via);
|
|
63
|
+
return pool;
|
|
64
|
+
};
|
|
65
|
+
const expanded = await expandQueries(noun, queries, addressable, scope);
|
|
49
66
|
const results = [];
|
|
50
67
|
const errors = [...expanded.globErrors];
|
|
51
|
-
const outOfScope = [];
|
|
52
|
-
|
|
68
|
+
const outOfScope = [...expanded.outOfScope];
|
|
69
|
+
// Two arguments may reach one entity by different routes — a name pattern
|
|
70
|
+
// and an IRI pattern, a name and that entity's own IRI. It is answered once.
|
|
71
|
+
const answered = new Set();
|
|
72
|
+
const settled = await Promise.allSettled(expanded.names.map((query) => lookupOne(rt, lookup, noun, query, source, prefixes, level, addressable, scope)));
|
|
53
73
|
for (const [index, outcome] of settled.entries()) {
|
|
54
74
|
const query = expanded.names[index];
|
|
55
75
|
if (query === undefined)
|
|
56
76
|
continue;
|
|
57
77
|
if (outcome.status === "fulfilled") {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
78
|
+
for (const entity of outcome.value.entities) {
|
|
79
|
+
const uri = String(entity.uri);
|
|
80
|
+
if (answered.has(uri))
|
|
81
|
+
continue;
|
|
82
|
+
answered.add(uri);
|
|
83
|
+
results.push(entity);
|
|
84
|
+
}
|
|
85
|
+
const fallback = outcome.value.outOfScope;
|
|
86
|
+
const key = (answer) => `${answer.query.toLowerCase()}|${answer.tiers.join()}`;
|
|
87
|
+
if (fallback && !outOfScope.some((a) => key(a) === key(fallback))) {
|
|
88
|
+
outOfScope.push(fallback);
|
|
89
|
+
}
|
|
61
90
|
continue;
|
|
62
91
|
}
|
|
63
92
|
const error = outcome.reason;
|
|
@@ -83,55 +112,150 @@ export async function resolveLookup(rt, lookup, noun, queries, source, prefixes,
|
|
|
83
112
|
results,
|
|
84
113
|
errors,
|
|
85
114
|
...(outOfScope.length > 0 ? { outOfScope } : {}),
|
|
115
|
+
...(expanded.total === undefined
|
|
116
|
+
? {}
|
|
117
|
+
: {
|
|
118
|
+
truncated: true,
|
|
119
|
+
total: expanded.total,
|
|
120
|
+
...(expanded.elsewhere ? { elsewhere: expanded.elsewhere } : {}),
|
|
121
|
+
...(level ? { detail: level } : {}),
|
|
122
|
+
}),
|
|
86
123
|
};
|
|
87
124
|
}
|
|
88
125
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
126
|
+
* The IRIs of every entity the given lookup arguments reach — the resolve
|
|
127
|
+
* alone, with nothing fetched. Each is read as {@link resolveLookup} reads a
|
|
128
|
+
* literal argument (a name, a prefixed IRI, an absolute IRI; never a pattern),
|
|
129
|
+
* under no tier scope: a name reaches its entity in every tier.
|
|
130
|
+
*
|
|
131
|
+
* @returns The distinct IRIs; none when the store holds no entity of the noun.
|
|
132
|
+
* @throws PragmaError INVALID_INPUT naming every argument that reaches nothing,
|
|
133
|
+
* with the suggestions a lookup miss offers; when an argument is empty; or
|
|
134
|
+
* when an IRI-shaped argument cannot be embedded in a query.
|
|
135
|
+
*/
|
|
136
|
+
export async function resolveEntityIris(rt, lookup, noun, queries, source, prefixes) {
|
|
137
|
+
const blank = queries.find((query) => query.trim() === "");
|
|
138
|
+
if (blank !== undefined) {
|
|
139
|
+
throw PragmaError.invalidInput(noun, "(empty)", {
|
|
140
|
+
recovery: { message: `Give a ${noun} name or IRI.` },
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
const iris = new Set();
|
|
144
|
+
const missed = [];
|
|
145
|
+
// The graphql-sourced resolve is the bare `?uri ?name` pair: no field read.
|
|
146
|
+
const bare = { ...lookup, source: "graphql" };
|
|
147
|
+
for (const query of queries) {
|
|
148
|
+
const rows = await runSelect(rt, buildResolveQuery(bare, query, prefixes, undefined), source);
|
|
149
|
+
if (rows.length === 0)
|
|
150
|
+
missed.push(query);
|
|
151
|
+
for (const row of firstRowPerEntity(rows))
|
|
152
|
+
iris.add(String(row.uri));
|
|
153
|
+
}
|
|
154
|
+
if (missed.length === 0)
|
|
155
|
+
return [...iris];
|
|
156
|
+
const pool = listAddressable(rt, lookup, source, prefixes, undefined);
|
|
157
|
+
if ((await pool).length === 0)
|
|
158
|
+
return [];
|
|
159
|
+
const suggestions = await Promise.all(missed.map((query) => suggestForMiss(() => pool, query)));
|
|
160
|
+
throw new PragmaError({
|
|
161
|
+
code: "INVALID_INPUT",
|
|
162
|
+
message: `No ${noun} is named "${missed.join('", "')}".`,
|
|
163
|
+
// Interleaved, so every miss gets a share of the slots.
|
|
164
|
+
suggestions: [
|
|
165
|
+
...new Set(suggestions
|
|
166
|
+
.flatMap((list, miss) => list.map((name, rank) => ({ name, rank, miss })))
|
|
167
|
+
.sort((a, b) => a.rank - b.rank || a.miss - b.miss)
|
|
168
|
+
.map((entry) => entry.name)),
|
|
169
|
+
].slice(0, MAX_SUGGESTIONS),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Expand glob queries to the ENTITIES they reach; literals pass through.
|
|
91
174
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* only when a glob of that shape is actually present.
|
|
175
|
+
* An IRI-shaped glob is matched against both spellings of an IRI, a prefix-less
|
|
176
|
+
* one against names and IRI local names. Matches are keyed by entity, so two
|
|
177
|
+
* routes to one entity count once. Under a tier scope the in-scope matches come
|
|
178
|
+
* first and an out-of-scope namesake of one is dropped, as a name lookup would;
|
|
179
|
+
* the cap is applied after that, over a deterministic order.
|
|
98
180
|
*/
|
|
99
|
-
async function expandQueries(
|
|
100
|
-
|
|
101
|
-
return { names: [...queries], globErrors: [] };
|
|
181
|
+
async function expandQueries(noun, queries, addressable, scope) {
|
|
182
|
+
const literals = [...new Set(queries.filter((q) => !isGlobPattern(q)))];
|
|
102
183
|
const globs = queries.filter(isGlobPattern);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
? await listEntityNames(rt, lookup, source)
|
|
108
|
-
: [];
|
|
109
|
-
const names = [];
|
|
184
|
+
if (globs.length === 0) {
|
|
185
|
+
return { names: literals, globErrors: [], outOfScope: [] };
|
|
186
|
+
}
|
|
187
|
+
const pool = await addressable();
|
|
110
188
|
const globErrors = [];
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
...new Set(expandGlob(query, [...byIri.keys()]).map((spelling) => byIri.get(spelling) ?? spelling)),
|
|
121
|
-
]
|
|
122
|
-
: expandGlob(query, byName);
|
|
123
|
-
if (matches.length === 0) {
|
|
189
|
+
const matched = new Map();
|
|
190
|
+
const inScope = (entity) => !scope || entity.tier === undefined || scope.tiers.includes(entity.tier);
|
|
191
|
+
for (const glob of globs) {
|
|
192
|
+
const forms = (entity) => looksLikeIri(glob)
|
|
193
|
+
? [entity.uri, entity.compact]
|
|
194
|
+
: [entity.name ?? "", entity.local];
|
|
195
|
+
const hits = new Set(expandGlob(glob, pool.flatMap(forms)));
|
|
196
|
+
const entities = pool.filter((entity) => forms(entity).some((form) => hits.has(form)));
|
|
197
|
+
if (entities.length === 0) {
|
|
124
198
|
globErrors.push({
|
|
125
|
-
query,
|
|
199
|
+
query: glob,
|
|
126
200
|
code: "EMPTY_RESULTS",
|
|
127
|
-
message: `No ${noun} entries matching "${
|
|
201
|
+
message: `No ${noun} entries matching "${glob}".`,
|
|
128
202
|
});
|
|
129
203
|
}
|
|
130
|
-
|
|
131
|
-
|
|
204
|
+
for (const entity of entities) {
|
|
205
|
+
// An entity in two tiers is in scope when either row is.
|
|
206
|
+
const known = matched.get(entity.uri);
|
|
207
|
+
if (!known || (!inScope(known) && inScope(entity))) {
|
|
208
|
+
matched.set(entity.uri, entity);
|
|
209
|
+
}
|
|
132
210
|
}
|
|
133
211
|
}
|
|
134
|
-
|
|
212
|
+
const label = (entity) => entity.name ?? entity.compact;
|
|
213
|
+
const scoped = new Set([...matched.values()].filter(inScope).map((e) => label(e).toLowerCase()));
|
|
214
|
+
const ordered = [...matched.values()]
|
|
215
|
+
.filter((e) => inScope(e) || !scoped.has(label(e).toLowerCase()))
|
|
216
|
+
.sort((a, b) => Number(!inScope(a)) - Number(!inScope(b)) ||
|
|
217
|
+
label(a).localeCompare(label(b)) ||
|
|
218
|
+
a.uri.localeCompare(b.uri));
|
|
219
|
+
const kept = ordered.slice(0, GLOB_EXPANSION_CAP);
|
|
220
|
+
const within = ordered.filter(inScope).length;
|
|
221
|
+
return {
|
|
222
|
+
names: [...literals, ...kept.map((entity) => entity.compact)],
|
|
223
|
+
globErrors,
|
|
224
|
+
outOfScope: kept
|
|
225
|
+
.filter((entity) => !inScope(entity))
|
|
226
|
+
.map((entity) => ({
|
|
227
|
+
query: label(entity),
|
|
228
|
+
tiers: [scopeTierName(entity.tier ?? "")],
|
|
229
|
+
scope: scope?.label ?? "",
|
|
230
|
+
})),
|
|
231
|
+
...(ordered.length <= kept.length
|
|
232
|
+
? {}
|
|
233
|
+
: within > kept.length
|
|
234
|
+
? { total: within, elsewhere: ordered.length - within }
|
|
235
|
+
: { total: ordered.length }),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* What to offer for an argument that reached nothing: near names, and the
|
|
240
|
+
* prefixed IRI of an entity whose local name is what was typed (exact match
|
|
241
|
+
* first). A bare local name is not an address; the miss names the form that is.
|
|
242
|
+
*/
|
|
243
|
+
async function suggestForMiss(addressable, query) {
|
|
244
|
+
const pool = await addressable();
|
|
245
|
+
const names = [...new Set(pool.flatMap((e) => (e.name ? [e.name] : [])))];
|
|
246
|
+
const taken = new Set(names.map((name) => name.trim().toLowerCase()));
|
|
247
|
+
const byLocal = new Map();
|
|
248
|
+
for (const entity of pool) {
|
|
249
|
+
const key = entity.local.toLowerCase();
|
|
250
|
+
if (taken.has(key))
|
|
251
|
+
continue;
|
|
252
|
+
byLocal.set(key, [
|
|
253
|
+
...new Set([...(byLocal.get(key) ?? []), entity.compact]),
|
|
254
|
+
]);
|
|
255
|
+
}
|
|
256
|
+
const exact = byLocal.get(query.trim().toLowerCase()) ?? [];
|
|
257
|
+
const ranked = suggestNames(query, [...names, ...byLocal.keys()]).flatMap((candidate) => byLocal.get(candidate) ?? [candidate]);
|
|
258
|
+
return [...new Set([...exact, ...ranked])].slice(0, MAX_SUGGESTIONS);
|
|
135
259
|
}
|
|
136
260
|
/**
|
|
137
261
|
* Look up every entity a lookup argument reaches, dispatching to the pack's
|
|
@@ -162,20 +286,13 @@ async function expandQueries(rt, lookup, noun, source, queries, prefixes) {
|
|
|
162
286
|
* that has always been true and `LIMIT 1` merely hid it. Without the collapse
|
|
163
287
|
* one entity would report itself as several.
|
|
164
288
|
*/
|
|
165
|
-
async function lookupOne(rt, lookup, noun, query, source, prefixes, level, scope) {
|
|
289
|
+
async function lookupOne(rt, lookup, noun, query, source, prefixes, level, addressable, scope) {
|
|
166
290
|
const graphqlSourced = lookup.source === "graphql";
|
|
167
291
|
const rows = await runSelect(rt, buildResolveQuery(lookup, query, prefixes, level, scope), source);
|
|
168
292
|
const resolved = firstRowPerEntity(rows);
|
|
169
293
|
if (resolved.length === 0) {
|
|
170
|
-
const candidates = await listEntityNames(rt, lookup, source);
|
|
171
294
|
throw PragmaError.notFound(noun, query, {
|
|
172
|
-
suggestions:
|
|
173
|
-
recovery: cliRecovery(`${noun} list`, `List available ${noun} entries.`, {
|
|
174
|
-
tool: `${noun}_list`,
|
|
175
|
-
// A concrete, valid argument bag rather than a bare tool name: an
|
|
176
|
-
// agent can call the recovery as written instead of guessing one.
|
|
177
|
-
params: {},
|
|
178
|
-
}),
|
|
295
|
+
suggestions: await suggestForMiss(addressable, query),
|
|
179
296
|
});
|
|
180
297
|
}
|
|
181
298
|
const chosen = applyScope(resolved, query, scope);
|
|
@@ -271,7 +388,8 @@ async function addSparqlExpands(rt, lookup, entity, source, level) {
|
|
|
271
388
|
for (const expand of activeExpands(lookup, level)) {
|
|
272
389
|
if (!expandIsSparql(lookup, expand))
|
|
273
390
|
continue;
|
|
274
|
-
|
|
391
|
+
const many = expand.select.flatMap((field) => "many" in field && field.many ? [field.name] : []);
|
|
392
|
+
const rows = (await runSelect(rt, buildExpandQuery(expand, String(entity.uri), lookup), source,
|
|
275
393
|
// A section whose vocabulary this store does not bind renders EMPTY
|
|
276
394
|
// rather than taking the whole entity down with it — see
|
|
277
395
|
// `RunSelectOptions.degradeOnUnboundPrefix`. The block lookup's tokens
|
|
@@ -279,6 +397,13 @@ async function addSparqlExpands(rt, lookup, entity, source, level) {
|
|
|
279
397
|
// without that pack does not bind, and every other section of that
|
|
280
398
|
// block is still perfectly answerable.
|
|
281
399
|
{ degradeOnUnboundPrefix: true }));
|
|
400
|
+
// An aggregate has no order of its own; a `many` cell is sorted here.
|
|
401
|
+
entity[expand.name] = rows.map((row) => ({
|
|
402
|
+
...row,
|
|
403
|
+
...Object.fromEntries(many
|
|
404
|
+
.filter((name) => row[name] !== undefined)
|
|
405
|
+
.map((name) => [name, (row[name] ?? "").split(" ").sort().join(" ")])),
|
|
406
|
+
}));
|
|
282
407
|
}
|
|
283
408
|
return entity;
|
|
284
409
|
}
|
|
@@ -335,35 +460,22 @@ function looksLikeIri(query) {
|
|
|
335
460
|
// concept "Foundations: Grid" — not a prefix separator.
|
|
336
461
|
(query.includes(":") && !/\s/.test(query)));
|
|
337
462
|
}
|
|
338
|
-
/**
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
async function listEntityIriSpellings(rt, lookup, source, prefixes) {
|
|
355
|
-
const rows = await runSelect(rt, buildLookupIrisQuery(lookup), source);
|
|
356
|
-
const spellings = new Map();
|
|
357
|
-
for (const row of rows) {
|
|
358
|
-
const uri = row.uri ?? "";
|
|
359
|
-
if (uri === "")
|
|
360
|
-
continue;
|
|
361
|
-
spellings.set(uri, uri);
|
|
362
|
-
const compact = compactUri(uri, prefixes);
|
|
363
|
-
if (compact !== uri)
|
|
364
|
-
spellings.set(compact, uri);
|
|
365
|
-
}
|
|
366
|
-
return spellings;
|
|
463
|
+
/** List every entity the lookup can address by IRI. */
|
|
464
|
+
async function listAddressable(rt, lookup, source, prefixes, via) {
|
|
465
|
+
const rows = await runSelect(rt, buildLookupIrisQuery(lookup, via), source);
|
|
466
|
+
return rows
|
|
467
|
+
.filter((row) => (row.uri ?? "") !== "")
|
|
468
|
+
.map((row) => {
|
|
469
|
+
const uri = row.uri;
|
|
470
|
+
const tier = row[SCOPE_TIER_VARIABLE];
|
|
471
|
+
return {
|
|
472
|
+
uri,
|
|
473
|
+
compact: compactUri(uri, prefixes),
|
|
474
|
+
local: localName(uri),
|
|
475
|
+
...(row.name ? { name: row.name } : {}),
|
|
476
|
+
...(tier ? { tier } : {}),
|
|
477
|
+
};
|
|
478
|
+
});
|
|
367
479
|
}
|
|
368
480
|
/** List every entity name the lookup can address (miss suggestions + sample/glob). */
|
|
369
481
|
export async function listEntityNames(rt, lookup, source) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveEntity.js","sourceRoot":"","sources":["../../../../src/kernel/packs/resolveEntity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolveEntity.js","sourceRoot":"","sources":["../../../../src/kernel/packs/resolveEntity.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,35 +9,20 @@
|
|
|
9
9
|
* entities at the highest level. All store access is through the runtime facade
|
|
10
10
|
* (lazy), so these factories carry no heavy static import.
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
12
|
+
import { PragmaError } from "../error/index.js";
|
|
13
13
|
import { encodeCursor, pageFingerprint, readCursor } from "./cursor.js";
|
|
14
14
|
import { resolvePackDetail } from "./disclosure.js";
|
|
15
15
|
import { readLimit } from "./paging.js";
|
|
16
|
-
import { listEntityNames, resolveLookup, } from "./resolveEntity.js";
|
|
16
|
+
import { listEntityNames, listRecovery, resolveEntityIris, resolveLookup, } from "./resolveEntity.js";
|
|
17
17
|
import { parseSampleCount, pickRandom } from "./sample.js";
|
|
18
|
-
import { buildListQuery } from "./sparql/buildListQuery.js";
|
|
18
|
+
import { buildListQuery, buildTierCountQuery, } from "./sparql/buildListQuery.js";
|
|
19
19
|
import { resolveFilterPredicates, } from "./sparql/filterValues.js";
|
|
20
20
|
import { runSelect } from "./sparql/runSelect.js";
|
|
21
21
|
import { readSearchTerm } from "./sparql/searchTerm.js";
|
|
22
|
-
import { resolveReadScope, scopeIris, scopeLabel, } from "./tierScope.js";
|
|
23
|
-
import { ENTITY_VARIABLE, } from "./types.js";
|
|
22
|
+
import { localName, resolveReadScope, scopeIris, scopeLabel, } from "./tierScope.js";
|
|
23
|
+
import { ENTITY_VARIABLE, UNTIERED_KEY, } from "./types.js";
|
|
24
24
|
/** The highest canonical level — sample fetches everything for shape discovery. */
|
|
25
25
|
const HIGHEST_LEVEL = "detailed";
|
|
26
|
-
/**
|
|
27
|
-
* The recovery every lookup-shaped miss carries: browse the noun's list.
|
|
28
|
-
*
|
|
29
|
-
* `mcp.params` is populated rather than left off. A bare tool NAME is only half
|
|
30
|
-
* an instruction to an agent — it still has to guess an argument bag, and a
|
|
31
|
-
* guess that misses returns `-32602 Invalid arguments`, which reads like the
|
|
32
|
-
* recovery itself was wrong. `{}` is the concrete, valid call: every compiled
|
|
33
|
-
* list verb's params are optional, so the recovery is now copy-pasteable.
|
|
34
|
-
*/
|
|
35
|
-
function listRecovery(noun) {
|
|
36
|
-
return cliRecovery(`${noun} list`, `List available ${noun} entries.`, {
|
|
37
|
-
tool: `${noun}_list`,
|
|
38
|
-
params: {},
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
26
|
/**
|
|
42
27
|
* Build the run body for a list-shaped verb (`list` or an extra verb).
|
|
43
28
|
*
|
|
@@ -57,7 +42,15 @@ function listRecovery(noun) {
|
|
|
57
42
|
export function makeListRun(shape, meta) {
|
|
58
43
|
return async (params, rt) => {
|
|
59
44
|
const vocabularies = await readFilterVocabularies(rt, shape.filters, params, meta.source);
|
|
60
|
-
const predicates =
|
|
45
|
+
const predicates = [
|
|
46
|
+
...resolveFilterPredicates(shape.filters?.filter((filter) => filter.noun === undefined), params, vocabularies, meta.source.label),
|
|
47
|
+
...(await resolveNounPredicates(rt, shape.filters, params, meta)),
|
|
48
|
+
];
|
|
49
|
+
// Left out of the rows: over the shipped pack the IRIs a noun filter
|
|
50
|
+
// constrains took the largest list past its payload budget (108 KB).
|
|
51
|
+
const omit = (shape.filters ?? [])
|
|
52
|
+
.flatMap((filter) => (filter.entity ? [filter.entity] : []))
|
|
53
|
+
.filter((name) => !shape.columns.some((column) => column.field === name));
|
|
61
54
|
const search = readSearchTerm(shape.search, params);
|
|
62
55
|
const scope = await resolveReadScope(rt, meta.tierScope, params.tier, meta.source);
|
|
63
56
|
// The scope as the query builder takes it, or nothing: a story with no
|
|
@@ -84,14 +77,22 @@ export function makeListRun(shape, meta) {
|
|
|
84
77
|
...(listScope ? [JSON.stringify(tiers)] : []),
|
|
85
78
|
]);
|
|
86
79
|
const offset = readCursor(params.after, fingerprint);
|
|
87
|
-
const
|
|
80
|
+
const read = {
|
|
88
81
|
query: shape.query,
|
|
89
82
|
predicates,
|
|
90
83
|
...(search ? { search } : {}),
|
|
84
|
+
label: meta.source.label,
|
|
85
|
+
};
|
|
86
|
+
const rows = await runSelect(rt, buildListQuery({
|
|
87
|
+
...read,
|
|
91
88
|
...(listScope ? { scope: listScope } : {}),
|
|
89
|
+
omit,
|
|
92
90
|
window: { limit: limit + 1, offset },
|
|
93
|
-
label: meta.source.label,
|
|
94
91
|
}), meta.source);
|
|
92
|
+
// First page only, and never the reason a list fails.
|
|
93
|
+
const counts = scope?.kind === "tiers" && listScope && params.after === undefined
|
|
94
|
+
? await readTierCounts(rt, { ...read, scope: listScope }, meta.source).catch(() => undefined)
|
|
95
|
+
: undefined;
|
|
95
96
|
const hasMore = rows.length > limit;
|
|
96
97
|
const applied = appliedFilters(shape, params, search?.term, scope);
|
|
97
98
|
return {
|
|
@@ -101,12 +102,37 @@ export function makeListRun(shape, meta) {
|
|
|
101
102
|
: {}),
|
|
102
103
|
...(applied.length > 0 ? { filters: applied } : {}),
|
|
103
104
|
...(scope?.kind === "tiers"
|
|
104
|
-
? {
|
|
105
|
+
? {
|
|
106
|
+
scope: {
|
|
107
|
+
tiers: scope.tiers.map((tier) => tier.local),
|
|
108
|
+
...(counts ? { counts } : {}),
|
|
109
|
+
},
|
|
110
|
+
}
|
|
105
111
|
: {}),
|
|
106
112
|
limit,
|
|
107
113
|
};
|
|
108
114
|
};
|
|
109
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Count the whole filtered answer's rows per tier: every in-scope tier (0 when
|
|
118
|
+
* it holds none), then the out-of-scope tiers that hold some, then
|
|
119
|
+
* {@link UNTIERED_KEY} when any row's entity is in no tier.
|
|
120
|
+
*/
|
|
121
|
+
async function readTierCounts(rt, read, source) {
|
|
122
|
+
const query = buildTierCountQuery(read);
|
|
123
|
+
const byIri = query.read(await runSelect(rt, query.text, source));
|
|
124
|
+
const inScope = read.scope.tiers.map((iri) => [localName(iri), byIri.get(iri) ?? 0]);
|
|
125
|
+
const outside = [...byIri]
|
|
126
|
+
.filter(([iri]) => iri !== "" && !read.scope.tiers.includes(iri))
|
|
127
|
+
.map(([iri, count]) => [localName(iri), count])
|
|
128
|
+
.sort(([a], [b]) => a.localeCompare(b));
|
|
129
|
+
const untiered = byIri.get("");
|
|
130
|
+
return Object.fromEntries([
|
|
131
|
+
...inScope,
|
|
132
|
+
...outside,
|
|
133
|
+
...(untiered ? [[UNTIERED_KEY, untiered]] : []),
|
|
134
|
+
]);
|
|
135
|
+
}
|
|
110
136
|
/**
|
|
111
137
|
* The filters this read was narrowed by, in the spelling the caller used.
|
|
112
138
|
*
|
|
@@ -184,6 +210,39 @@ async function readFilterVocabularies(rt, filters, params, source) {
|
|
|
184
210
|
}
|
|
185
211
|
return resolved;
|
|
186
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Turn the values a caller supplied for each NOUN filter into a constraint on
|
|
215
|
+
* the entities they name.
|
|
216
|
+
*
|
|
217
|
+
* @returns One `"iri"` predicate per noun filter the caller used, over the
|
|
218
|
+
* IRIs its values reached. Against a store holding none of that noun's
|
|
219
|
+
* entities the predicate names no IRI and the list answers empty.
|
|
220
|
+
* @throws PragmaError INVALID_INPUT when a value reaches no entity of the noun;
|
|
221
|
+
* CONFIG_ERROR when no story known to this one declares a lookup for it.
|
|
222
|
+
*/
|
|
223
|
+
async function resolveNounPredicates(rt, filters, params, meta) {
|
|
224
|
+
const predicates = [];
|
|
225
|
+
for (const filter of filters ?? []) {
|
|
226
|
+
const provided = params[filter.param];
|
|
227
|
+
if (!filter.noun || !filter.entity || provided === undefined)
|
|
228
|
+
continue;
|
|
229
|
+
const occurrences = Array.isArray(provided) ? provided : [provided];
|
|
230
|
+
if (occurrences.length === 0)
|
|
231
|
+
continue;
|
|
232
|
+
const lookup = meta.nouns?.(filter.noun);
|
|
233
|
+
if (!lookup) {
|
|
234
|
+
throw PragmaError.configError(`Filter "--${filter.param}" in ${meta.source.label} names the noun "${filter.noun}", and no story declares a lookup for it.`);
|
|
235
|
+
}
|
|
236
|
+
const terms = await resolveEntityIris(rt, lookup, filter.noun, occurrences.map((value) => String(value).trim().normalize("NFC")), meta.source, meta.prefixes);
|
|
237
|
+
predicates.push({
|
|
238
|
+
variable: filter.entity,
|
|
239
|
+
match: "iri",
|
|
240
|
+
terms,
|
|
241
|
+
...(filter.via ? { via: filter.via } : {}),
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
return predicates;
|
|
245
|
+
}
|
|
187
246
|
/**
|
|
188
247
|
* Build the run body for a lookup verb (variadic names → resolved entities).
|
|
189
248
|
*
|
|
@@ -194,12 +253,12 @@ async function readFilterVocabularies(rt, filters, params, source) {
|
|
|
194
253
|
* back rather than answering "no such block" about a block that exists
|
|
195
254
|
* ({@link ./resolveEntity.applyScope}).
|
|
196
255
|
*/
|
|
197
|
-
export function makeLookupRun(lookup, noun, source, prefixes, tierScope) {
|
|
256
|
+
export function makeLookupRun(lookup, noun, source, prefixes, hasList, tierScope) {
|
|
198
257
|
return async (params, rt) => {
|
|
199
258
|
const names = readNames(params);
|
|
200
259
|
const level = await resolvePackDetail(rt, lookup.disclosure);
|
|
201
260
|
const scope = await resolveReadScope(rt, tierScope, params.tier, source);
|
|
202
|
-
const output = await resolveLookup(rt, lookup, noun, names, source, prefixes, level, lookupScope(tierScope, scope));
|
|
261
|
+
const output = await resolveLookup(rt, lookup, noun, names, source, prefixes, level, hasList, lookupScope(tierScope, scope));
|
|
203
262
|
// A total miss (single or all-miss) exits non-zero; a partial batch renders
|
|
204
263
|
// the results it found and notes the misses.
|
|
205
264
|
if (output.results.length === 0 && output.errors.length > 0) {
|
|
@@ -209,7 +268,7 @@ export function makeLookupRun(lookup, noun, source, prefixes, tierScope) {
|
|
|
209
268
|
code: first.code,
|
|
210
269
|
message: first.message,
|
|
211
270
|
suggestions: first.suggestions ? [...first.suggestions] : undefined,
|
|
212
|
-
recovery: listRecovery(noun),
|
|
271
|
+
recovery: listRecovery(noun, hasList),
|
|
213
272
|
});
|
|
214
273
|
}
|
|
215
274
|
}
|
|
@@ -243,7 +302,7 @@ function lookupScope(declaration, scope) {
|
|
|
243
302
|
* the draw pool depend on a setting, so two agents reading the same store would
|
|
244
303
|
* see different exemplars for reasons neither asked about.
|
|
245
304
|
*/
|
|
246
|
-
export function makeSampleRun(lookup, noun, source, prefixes, defaultCount) {
|
|
305
|
+
export function makeSampleRun(lookup, noun, source, prefixes, defaultCount, hasList) {
|
|
247
306
|
return async (params, rt) => {
|
|
248
307
|
const count = parseSampleCount(params.count ?? defaultCount);
|
|
249
308
|
const names = await listEntityNames(rt, lookup, source);
|
|
@@ -252,11 +311,11 @@ export function makeSampleRun(lookup, noun, source, prefixes, defaultCount) {
|
|
|
252
311
|
if (names.length === 0) {
|
|
253
312
|
throw PragmaError.emptyResults(noun, {
|
|
254
313
|
message: `No ${noun} entries to sample.`,
|
|
255
|
-
recovery: listRecovery(noun),
|
|
314
|
+
recovery: listRecovery(noun, hasList),
|
|
256
315
|
});
|
|
257
316
|
}
|
|
258
317
|
const selected = pickRandom(names, count);
|
|
259
|
-
const output = await resolveLookup(rt, lookup, noun, selected, source, prefixes, HIGHEST_LEVEL);
|
|
318
|
+
const output = await resolveLookup(rt, lookup, noun, selected, source, prefixes, HIGHEST_LEVEL, hasList);
|
|
260
319
|
return {
|
|
261
320
|
samples: output.results,
|
|
262
321
|
totalCount: names.length,
|