Move the standard library (previously `github.com/openprose/std`) and
the company-as-prose library (previously local dir
`/Users/sl/code/openprose/company-as-prose`) into this repository
under `packages/std/` and `packages/co/` respectively.
Motivation: concentrate attention on one repository so stars,
discussions, and issues aggregate. `openprose/std` was a genuinely
useful asset nobody could find because ~50 stars on its own repo
told a much worse story than 1,106 stars on `openprose/prose`
would have. Same logic applies to co.
Layout choice: `packages/{std,co}/` rather than `std/` + `co/` at
the repo root. Root siblings accumulate over time, and a flat
top-level made future libraries (hub, kit, dev, etc.) compete with
spec infrastructure. `packages/` is bounded — new libraries land
there without cluttering root. Matches pnpm/Deno/monorepo tooling
conventions.
Changes:
- New: `packages/std/` (copied from openprose/std, `.git` excluded)
- New: `packages/co/` (copied from company-as-prose, README updated
for new name and location)
- `packages/std/README.md`: updated shorthand expansion reference
- `packages/co/README.md`: renamed "company-as-prose" to "co" in
self-references, added std-vs-co split heuristic, updated
`prose run` examples to use `co/` shorthand
- `skills/open-prose/deps.md`:
- `std/` shorthand now expands to
`github.com/openprose/prose/packages/std/`
- `co/` shorthand added, expands to
`github.com/openprose/prose/packages/co/`
- Both shorthands resolve into the same clone of
`openprose/prose` under `.deps/github.com/openprose/prose/`;
`packages/std/` and `packages/co/` are sibling subdirectories
- `prose.lock` format row updated to `host/owner/repo sha`
(matches the explicit-host resolution that landed in #35)
- `.deps/` directory structure example redrawn to show the
`{host}/{owner}/{repo}/packages/{std,co}/...` shape
- Error message and Interaction tables refreshed accordingly
- Resolution Algorithm step 1 now documents both shorthands
- `skills/open-prose/forme.md`: Step 2 resolution list updated to
include co/ shorthand and the host-keyed `.deps/` layout
- `skills/open-prose/help.md`: Q&A "How do dependencies work?"
rewritten to name both shorthands and the new explicit-host model
- `skills/open-prose/state/filesystem.md`: `.deps/` directory
tree re-drawn to include the `{host}/` layer with std/co as
sibling packages inside the clone
- `skills/open-prose/guidance/patterns.md`,
`skills/open-prose/guidance/antipatterns.md`: examples now use
the `std/` shorthand or explicit `github.com/...` rather than
the deprecated bare `openprose/std/` form
- `skills/open-prose/examples/registry-import/index.md`: sample
service reference switched to `std/evals/inspector`
- `README.md`: Stdlib badge replaced with internal `packages/std/`
link plus new `packages/co/` link; "Standard Library" section
rewritten as "Libraries" with both packages described
Out of scope for this PR (deliberately):
- Tooling changes to `prose install` and Forme's `.deps/` writer
to adopt the `{host}/{owner}/{repo}/` layout in practice — this
PR is spec-only. Existing tooling continues to work against
whatever layout it currently implements; the spec now describes
the target.
- Retiring the `openprose/std` GitHub repo. Delete that repo
separately after this merges.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.0 KiB
name, kind
| name | kind |
|---|---|
| extractor | service |
Extractor
Extract structured data from unstructured input according to a target schema. Use extractor when you need to transform raw text, logs, or observations into a defined data structure. Distinct from formatter (which transforms already-structured data into a different output format) -- extractor finds and lifts information from unstructured content.
Description
Pull structured data from unstructured input given a target schema.
Metadata
version: 0.1.0
Requires
- input: the unstructured data (text, log output, raw observations, HTML, etc.)
- schema: the target structure with field names, types, and descriptions of what each field should contain
Ensures
- extracted: an object conforming to the target schema where:
- each field has a confidence indicator (high, medium, low)
- fields that cannot be confidently extracted are null with a reason -- never hallucinated
- no information in the output that was not in the input
- if the input contains multiple valid extractions: all are returned, or the ambiguity is flagged, depending on the schema's cardinality
Errors
- no-match: the input contains no information matching any field in the schema
- format-unreadable: the input is corrupted, truncated, or in a format that cannot be parsed
Strategies
- when evidence is ambiguous: prefer null over guessing -- a null with a reason is more useful than a fabricated value
- when multiple interpretations exist: note all candidates and select the one with strongest textual evidence
- when the input is large: scan for schema-relevant sections first, then extract from those sections rather than processing the entire input linearly
Notes
Extractor is a strict information-lifting function. Its core invariant is that no information appears in the output that was not present in the input. For compressing existing content, use summarizer. For reshaping structured data into a different format, use formatter. For investigating a topic and producing new findings, use researcher.