@oxy-hq/cli 0.7.0 → 0.9.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 +131 -8
- package/dist/main.mjs +4909 -3551
- package/dist/main.mjs.map +1 -1
- package/dist/{mcp-xxWL3_dz.mjs → mcp-Bdp0rX0l.mjs} +2 -2
- package/dist/{mcp-xxWL3_dz.mjs.map → mcp-Bdp0rX0l.mjs.map} +1 -1
- package/package.json +5 -5
- package/skills/oxy-agents/SKILL.md +318 -0
- package/skills/oxy-agents/references/quick-reference.md +222 -0
- package/skills/oxy-agents/templates/agentic-template.yml +141 -0
- package/skills/oxy-airway-pipelines/SKILL.md +223 -316
- package/skills/oxy-automations/SKILL.md +61 -15
- package/skills/oxy-cli/SKILL.md +37 -4
- package/skills/oxy-custom-apps/SKILL.md +193 -291
- package/skills/oxy-custom-apps/references/minimal-starter.md +63 -0
- package/skills/oxy-custom-apps/references/performance-and-usage.md +105 -0
- package/skills/oxy-custom-apps/references/reading-data.md +106 -0
- package/skills/oxy-custom-apps/references/sandbox-agent-loop.md +267 -0
- package/skills/oxy-custom-apps/references/verifying-in-the-browser.md +65 -0
- package/skills/oxy-data-apps/SKILL.md +362 -0
- package/skills/oxy-data-apps/references/examples.md +263 -0
- package/skills/oxy-data-apps/references/quick-reference.md +171 -0
- package/skills/oxy-data-apps/templates/dashboard-with-controls.app.yml +128 -0
- package/skills/oxy-data-apps/templates/simple-dashboard.app.yml +102 -0
- package/skills/oxy-data-architecture/SKILL.md +137 -152
- package/skills/oxy-evals/SKILL.md +362 -0
- package/skills/oxy-evals/references/diagnosis.md +243 -0
- package/skills/oxy-evals/references/results-json.md +145 -0
- package/skills/oxy-evals/references/writing-expected.md +112 -0
- package/skills/oxy-semantic-modeling/SKILL.md +239 -59
- package/skills/oxy-semantic-modeling/references/warehouse-casts.md +57 -0
- package/skills/oxy-semantic-modeling/templates/topic-template.yml +38 -0
- package/skills/oxy-semantic-modeling/templates/view-template.yml +119 -0
- package/template/.github/workflows/publish.yaml +15 -13
- package/template/.nvmrc +1 -1
- package/template/.oxyc-managed +5 -5
- package/template/README.md +21 -10
- package/template/package.json +3 -2
- package/template/pnpm-workspace.yaml +28 -17
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Oxy `.agentic.yml` template: an analytics agent over the semantic model.
|
|
2
|
+
#
|
|
3
|
+
# Save as <name>.agentic.yml (not .yaml) anywhere in the workspace, but not
|
|
4
|
+
# under a dot-directory, build/, dist/, target/ or node_modules/, and with no
|
|
5
|
+
# `.test.` in the file name; those paths are not deployed.
|
|
6
|
+
#
|
|
7
|
+
# Check the shape offline: oxyc validate --file <path>
|
|
8
|
+
# First real check is a run: oxy agentic run <path> -q "<question>"
|
|
9
|
+
#
|
|
10
|
+
# Every key is optional. Unknown keys, at any level, are ignored without a
|
|
11
|
+
# warning by the runtime and by both validators, so spell them exactly.
|
|
12
|
+
|
|
13
|
+
# -- Global instructions -----------------------------------------------------
|
|
14
|
+
# Added to the system prompt of every LLM state. Put the persona, business
|
|
15
|
+
# conventions and the views/topics to prefer here; per-state additions go
|
|
16
|
+
# under `states:` and are appended, not substituted.
|
|
17
|
+
instructions: |
|
|
18
|
+
You are a revenue analytics assistant for Acme Corp.
|
|
19
|
+
Report currency in USD and dates as ISO 8601.
|
|
20
|
+
"Customer" means the `customers` view, not `users` (which counts seats).
|
|
21
|
+
Prefer measures from the semantic model over hand-written aggregations.
|
|
22
|
+
|
|
23
|
+
# IANA timezone for "today", "yesterday", "last week". Falls back to the
|
|
24
|
+
# `timezone:` in config.yml, then UTC. An invalid name fails the run.
|
|
25
|
+
timezone: America/New_York
|
|
26
|
+
|
|
27
|
+
# -- Connections ---------------------------------------------------------------
|
|
28
|
+
# Names from config.yml `databases:`. The agent can query these PLUS every
|
|
29
|
+
# database its context files reference (a view's `datasource`, a verified
|
|
30
|
+
# query's `database:`, an automation task's `database:`). There is no fallback
|
|
31
|
+
# to every database in config.yml: with none at all the run fails with
|
|
32
|
+
# "no databases configured".
|
|
33
|
+
databases:
|
|
34
|
+
- warehouse
|
|
35
|
+
|
|
36
|
+
# -- Context -------------------------------------------------------------------
|
|
37
|
+
# Globs relative to THIS file's directory, bucketed by file name:
|
|
38
|
+
# *.view.yml, *.topic.yml semantic catalog
|
|
39
|
+
# *.sql with a /* oxy: ... */ header verified query: found by the
|
|
40
|
+
# search_automations tool, run verbatim
|
|
41
|
+
# *.sql without that header SQL style examples for `solving`
|
|
42
|
+
# *.md notes for `clarifying`/`interpreting`
|
|
43
|
+
# *.automation.yml, *.procedure.yml automations the agent may pick and run
|
|
44
|
+
# Anything else is ignored.
|
|
45
|
+
context:
|
|
46
|
+
- ./semantics/**/*.view.yml
|
|
47
|
+
- ./semantics/**/*.topic.yml
|
|
48
|
+
- ./verified_queries/*.sql
|
|
49
|
+
- ./docs/glossary.md
|
|
50
|
+
- ./automations/*.automation.yml
|
|
51
|
+
|
|
52
|
+
# -- Model ---------------------------------------------------------------------
|
|
53
|
+
# `ref` must equal a `name:` under config.yml `models:`; vendor, API key (a
|
|
54
|
+
# workspace secret in the cloud) and base URL come from that entry. With
|
|
55
|
+
# neither `ref` nor `model`, the first model in config.yml is used.
|
|
56
|
+
# `model` fields here and under `states:` are provider model IDs, not
|
|
57
|
+
# config.yml names.
|
|
58
|
+
llm:
|
|
59
|
+
ref: claude
|
|
60
|
+
# Leave max_tokens unset unless you need a hard cap: unset, it is sized from
|
|
61
|
+
# the thinking setting. A value you set is used as-is.
|
|
62
|
+
# max_tokens: 8192
|
|
63
|
+
#
|
|
64
|
+
# Replaces the model AND the thinking setting in every state while the user
|
|
65
|
+
# has "extended thinking" switched on. Without this block the toggle does
|
|
66
|
+
# nothing.
|
|
67
|
+
extended_thinking:
|
|
68
|
+
model: claude-opus-4-8
|
|
69
|
+
thinking:
|
|
70
|
+
effort: high
|
|
71
|
+
|
|
72
|
+
# -- Thinking --------------------------------------------------------------------
|
|
73
|
+
# A global value REPLACES every state's built-in default (solving: adaptive,
|
|
74
|
+
# all others: disabled), so prefer setting it per state below.
|
|
75
|
+
# Forms: adaptive | disabled | effort:<level> | {effort: <level>} |
|
|
76
|
+
# {budget_tokens: N} (Claude 4.6 and earlier; converted on newer models)
|
|
77
|
+
# Levels: low | medium | high | xhigh | max. Never `false`.
|
|
78
|
+
# thinking: adaptive
|
|
79
|
+
|
|
80
|
+
# -- Per-state overrides ---------------------------------------------------------
|
|
81
|
+
# Honoured keys: clarifying, specifying, solving, interpreting. (`executing`
|
|
82
|
+
# has no LLM; any other key is ignored silently.)
|
|
83
|
+
# Fields: instructions, thinking, model (same provider as `llm:`), and
|
|
84
|
+
# max_retries = tool-call rounds per visit before the run pauses to ask the
|
|
85
|
+
# user whether to continue (clarifying has a fixed limit and ignores it).
|
|
86
|
+
states:
|
|
87
|
+
clarifying:
|
|
88
|
+
instructions: |
|
|
89
|
+
"Last quarter" means the most recent completed fiscal quarter.
|
|
90
|
+
"MRR" is the `monthly_recurring_revenue` measure on the `revenue` view.
|
|
91
|
+
model: claude-haiku-4-5
|
|
92
|
+
specifying:
|
|
93
|
+
max_retries: 8
|
|
94
|
+
solving:
|
|
95
|
+
# Runs only when the semantic model could not compile the question, so
|
|
96
|
+
# never put guidance every answer needs here.
|
|
97
|
+
instructions: Prefer CTEs over subqueries; alias every aggregate.
|
|
98
|
+
thinking:
|
|
99
|
+
effort: high
|
|
100
|
+
max_retries: 4
|
|
101
|
+
interpreting:
|
|
102
|
+
thinking: disabled
|
|
103
|
+
|
|
104
|
+
# -- Result checks (optional) ----------------------------------------------------
|
|
105
|
+
# Omit the whole section to run the 15 default checks with default thresholds.
|
|
106
|
+
# When present it REPLACES that set: only the rules listed here (and not
|
|
107
|
+
# `enabled: false`) run, and a stage with no list is not checked at all.
|
|
108
|
+
# This is the full default set with two thresholds tuned.
|
|
109
|
+
validation:
|
|
110
|
+
rules:
|
|
111
|
+
specified:
|
|
112
|
+
- name: metric_resolves
|
|
113
|
+
- name: join_key_exists
|
|
114
|
+
- name: filter_unambiguous
|
|
115
|
+
solvable:
|
|
116
|
+
- name: sql_syntax
|
|
117
|
+
- name: tables_exist_in_catalog
|
|
118
|
+
- name: spec_tables_present
|
|
119
|
+
- name: column_refs_valid
|
|
120
|
+
- name: timeseries_order_by_check
|
|
121
|
+
solved:
|
|
122
|
+
- name: non_empty
|
|
123
|
+
- name: truncation_warning
|
|
124
|
+
- name: no_nan_inf
|
|
125
|
+
- name: outlier_detection
|
|
126
|
+
threshold_sigma: 4.0
|
|
127
|
+
min_rows: 6
|
|
128
|
+
- name: null_ratio_check
|
|
129
|
+
threshold: 0.3
|
|
130
|
+
- name: duplicate_row_check
|
|
131
|
+
- name: freshness_check
|
|
132
|
+
|
|
133
|
+
# -- External semantic engine (optional) -----------------------------------------
|
|
134
|
+
# Routes queries through Cube or Looker before Oxy's own semantic model. The
|
|
135
|
+
# engine is pinged when a run starts; unreachable fails the run. ${VAR} is read
|
|
136
|
+
# from the server's environment and a missing variable fails the run.
|
|
137
|
+
#
|
|
138
|
+
# semantic_engine:
|
|
139
|
+
# vendor: cube # cube | looker
|
|
140
|
+
# base_url: https://cube.example.com
|
|
141
|
+
# api_token: "${CUBE_API_TOKEN}" # Looker: client_id + client_secret instead
|