Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## 0.2.0 — 2026-09-06

- Add the live source-bound EveryData cleanup route while preserving `everyinfra_chat` compatibility.
- Document all 15 cleanup operations, entitlement and bounded included-use limits.
- Add inferred field discovery, task listing and original-task recovery by idempotency key.
- Keep activation, submission, partial export, cancellation and deletion as separate decisions.

## 0.1.0 — 2026-09-05

- Standalone packaging for `everyai`.
Expand Down
19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@

![EveryInfra H2 shared-base mark](plugins/everyai/assets/logo.svg)

[简体中文](README.zh-CN.md) · [Setup](docs/setup.md) · [Workflow](docs/workflow.md) · [Prompts](examples/prompts.md) · [Capability reference](docs/reference.md) · [API documentation](https://api.everyinfra.com/docs)
[简体中文](README.zh-CN.md) · [Setup](docs/setup.md) · [Workflow](docs/workflow.md) · [Cleanup transition](docs/migration.md) · [Prompts](examples/prompts.md) · [Capability reference](docs/reference.md) · [API documentation](https://api.everyinfra.com/docs)

> **Source-bound cleanup is live:** Production advertises two cleanup tools with 15 operations while
> the existing `everyinfra_chat` compatibility path remains active. Cleanup is a bounded benefit for
> qualifying EveryData accounts; the live entitlement response decides each account's eligibility,
> activation and remaining quota.

EveryAI is a standalone EveryInfra agent skill for text classification, extraction, translation and summarization. It uses the available everyinfra_chat MCP models, minimizes the supplied input and checks the requested output format before downstream use.

Expand Down Expand Up @@ -73,6 +78,18 @@ No model response should be trusted solely because JSON was requested. Parse the

Not by itself. Generation is not retrieval. For current claims, obtain and inspect sources instead of treating fluent output as evidence.

### Is EveryData cleanup available through this skill?

Yes, when the live MCP discovery returns the two source-bound cleanup tools and the account's
entitlement allows it. See the [migration guide](docs/migration.md); do not send an EveryData result
through general chat to simulate cleanup access.

Qualifying direct accounts may explicitly activate a bounded included-cleanup
period for authorized EveryData results. It is not unlimited free Gemini or a general chat credit.
The live entitlement response supplies current eligibility and remaining quota. The MCP surface has
15 operations, including field discovery and original-task recovery; callers still
must start with `tools/list` and use the returned schemas.

## Validate and contribute

```bash
Expand Down
12 changes: 11 additions & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# EveryAI:AI 文本处理

[English](README.md) · [安装配置](docs/setup.md) · [工作流程](docs/workflow.md) · [提示词示例](examples/prompts.md) · [能力与来源](docs/reference.md)
[English](README.md) · [安装配置](docs/setup.md) · [工作流程](docs/workflow.md) · [清洗转型](docs/migration.zh-CN.md) · [提示词示例](examples/prompts.md) · [能力与来源](docs/reference.md)

> **来源绑定清洗已上线:**生产已发现2个清洗工具、共15个操作,既有`everyinfra_chat`继续兼容。
> 清洗是符合条件EveryData账户的有界权益;实际资格、激活与剩余额度以实时权益响应为准。

EveryAI 用于已经拿到文本之后的分类、抽取、翻译和摘要。先限定输入与输出格式,再调用当前可用模型,最后验证结果能否用于后续自动化。

Expand Down Expand Up @@ -43,3 +46,10 @@ python3 scripts/validate.py
上述命令只做本地包结构、文档链接、元数据与示例校验,不产生付费调用。更具体的能力限制、错误处理和结果标准见[英文说明](README.md)与[工作流程](docs/workflow.md)。

GitHub 源码公开不等于已在官方插件市场上架,也不代表 API 端到端测试已通过。维护者为 [EveryInfra](https://everyinfra.com),许可证为 [Apache-2.0](LICENSE)。

清洗迁移的资格、限制和停手条件见[清洗转型说明](docs/migration.zh-CN.md)。执行仍先读实时MCP
`tools/list`与schema;不得把EveryData结果改送通用聊天来模拟清洗权益。

符合条件的直客账户可显式领取有界的站内EveryData结果清洗权益;它不是无限免费Gemini,也不是
通用聊天余额。当前共15个操作,包含字段发现与原任务找回,但执行仍必须先读
生产`tools/list`和实时schema。
87 changes: 87 additions & 0 deletions docs/migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# EveryAI cleanup transition

> Production advertises source-bound cleanup alongside the existing `everyinfra_chat` compatibility
> tool. Always confirm both cleanup tools through live MCP discovery; availability does not prove a
> particular account is eligible, activated or end-to-end tested.

## What is changing

EveryAI currently processes supplied text through the general-purpose chat contract. The planned
direction moves cleanup of EveryData results to a separate, source-bound entitlement rather than
making general chat free or silently changing the meaning of `everyinfra_chat`.

The initial cleanup policy has been approved for implementation with these limits:

| Dimension | Planned contract | Not implied |
| --- | --- | --- |
| Eligibility | Direct account with at least CNY 500.00 in verified net settled recharge principal | Wallet balance, bonus credit, or an unverified redemption code is not eligibility evidence. |
| Activation | Explicit, one-time activation | Reading entitlement status does not start the period. |
| Trial | 30 days, at most 30,000 successful units | It is not permanent or unlimited access. |
| Daily use | At most 1,000 successful units per UTC day | Failed attempts do not become successful usage. |
| Submit rate | 5 execute attempts per minute per account | Multiple API keys do not multiply the limit. |
| Concurrency | At most 5 execution units per account | It is not evidence of available production capacity. |

Cleanup remains bound to an authorized, readable EveryData source and a server-declared recipe. It
does not accept arbitrary chat history, customer-defined system prompts, model selection, tools,
external URLs, or a free-form output schema.

## Live 15-operation surface

Production uses two MCP tools and 15 operations. Always re-read the live `tools/list` and schemas.

| Tool | Operations | Purpose |
| --- | --- | --- |
| `everyinfra_data_cleanup_read` | `get_entitlement`, `get_source`, `get_source_fields`, `list_recipes`, `preview`, `list_jobs`, `find_job`, `get_job`, `list_units`, `get_result`, `export` | Inspect eligibility and current policy, discover a source version and fields, preview fixed recipes, recover the original task, and read/export terminal results. |
| `everyinfra_data_cleanup_action` | `activate`, `submit`, `cancel`, `delete_result` | Explicitly start the included period, submit an idempotent task, request cancellation, or delete result content. |

At execution time, call `tools/list`, confirm both tool names are present, then read the returned
schemas. If they are absent, keep using `everyinfra_chat` only for ordinary user-supplied text and
report source-bound cleanup as unavailable. Do not create a guessed request from this table.

### Refresh recovery and field discovery

- `list_jobs` returns the current account's unexpired tasks with bounded cursor pagination.
- `find_job` uses the original submission idempotency key to find that same task after an unknown
response or refresh. Preserve the key outside the URL and analytics. A 404 does not prove the
interrupted request was never accepted, so do not automatically submit with a new key.
- `get_source_fields` returns bounded inferred field paths and types without example values. Use the
returned source version and treat inference as selection help; actual recipe validity is decided
by `preview`.

## Choose the correct path

| Request | Current behavior | After a public cleanup contract exists |
| --- | --- | --- |
| Transform text the user already supplied | Use `everyinfra_chat` when it remains present in the live schema and the operation is authorized. | Follow the published compatibility or retirement notice; cleanup is not automatically an equivalent replacement. |
| Clean an EveryData result | Discover the live cleanup tools or REST operations, verify entitlement and source version, preview, then submit only after authorization. Do not relabel general chat as the cleanup entitlement. | Follow the same source-bound contract and any dated compatibility notice. |
| Normalize data deterministically | Prefer ordinary code when it can produce the result without a model. | The same rule continues; model cleanup is not mandatory. |
| Verify a current claim | Use EverySearch or a research workflow. | Cleanup output still does not prove a current fact. |

Never invent cleanup tool names or payloads from this document. The live MCP `tools/list` and public
OpenAPI document are the runtime contract. If they do not advertise cleanup, stop with a clear
availability result instead of sending the source through general chat as a fallback.

## Migration sequence

1. Keep existing authorized `everyinfra_chat` calls working while the compatibility interface is
still published; no retirement date is declared here.
2. Inventory which calls transform user-supplied text and which calls process EveryData results.
3. For source-bound requests, discover the public cleanup schema and preserve the server-issued
source reference and version.
4. Use discovery, entitlement inspection, preview, explicit activation and idempotent submission in
that order.
5. Treat an unknown submission result as the original operation to inspect. Do not change an
idempotency key or fall back to chat to repeat work whose outcome is unknown.
6. Retire old integrations only after a dated notice and the announced compatibility period. The
compatibility period and an account's cleanup trial are separate clocks.

## Delivery layers

- **Skill:** instructions that help an agent choose and execute the workflow; editing a Skill does
not add a server capability.
- **MCP:** the live runtime tool connection and schemas; a cleanup claim requires the production
server to advertise and execute it.
- **Plugin:** the installable package that can distribute Skills and MCP metadata; publishing or
installing it does not prove the service is enabled for an account.

Return to the [EveryAI overview](../README.md) or [workflow](workflow.md).
67 changes: 67 additions & 0 deletions docs/migration.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# EveryAI 清洗转型说明

> 生产EveryInfra MCP已在既有`everyinfra_chat`兼容工具之外提供来源绑定清洗。每次执行仍须先
> 通过实时发现确认两个清洗工具;工具存在不证明特定账户已达标、激活或完成端到端实测。

## 变化方向

EveryAI 当前通过通用聊天契约处理用户已经提供的文本。后续方向是把 EveryData 结果清洗迁到
独立、绑定站内来源的附赠权益,而不是把通用聊天改成免费,也不是静默改变
`everyinfra_chat` 的含义。

首期清洗政策已经确认用于实现:直客账户的可核净结算充值本金达到人民币 500 元后显式领取;
首期 30 天,每个 UTC 日最多 1,000 个成功单元,总计最多 30,000 个成功单元;同一账户每分钟
最多 5 次执行提交、最多 5 个并发执行单元。以上是计划契约,不是线上容量、永久权益或“无限
免费”的承诺。

清洗输入必须来自客户有权读取、仍未过期的 EveryData 结果,并使用服务端登记配方。它不接受
任意聊天历史、自定义 system prompt、模型选择、工具、外部 URL 或自由输出 schema。

## 已上线的 15 个操作

生产通过两个MCP工具提供15个操作。执行前仍须重新读取线上`tools/list`与schema。

| 工具 | 操作 | 用途 |
| --- | --- | --- |
| `everyinfra_data_cleanup_read` | `get_entitlement`、`get_source`、`get_source_fields`、`list_recipes`、`preview`、`list_jobs`、`find_job`、`get_job`、`list_units`、`get_result`、`export` | 查询资格/政策,发现来源版本和字段,预览固定配方,找回原任务,读取及导出终态结果。 |
| `everyinfra_data_cleanup_action` | `activate`、`submit`、`cancel`、`delete_result` | 显式开始权益周期、幂等提交任务、申请取消或删除结果正文。 |

执行时必须先调用 `tools/list`,确认两个工具实际存在,再读取返回的 `inputSchema`。未发现时,
`everyinfra_chat` 只继续处理用户自带普通文本;来源绑定清洗明确返回不可用,不能按本文拼请求。

### 刷新恢复与字段发现

- `list_jobs` 以有界游标列出当前账户来源尚未到期的任务。
- `find_job` 使用原提交幂等键,在未知回执或刷新后找回同一任务。幂等键不进入 URL 或分析事件;
404 不能证明原提交从未受理,因此不能自动换新键重提。
- `get_source_fields` 返回有界推断字段路径和类型,不返回样例值。字段推断只帮助选择;必须保留
返回的来源版本,真正可执行性仍由 `preview` 判定。

## 如何选择路径

| 请求 | 当前处理 | 清洗公开上线后 |
| --- | --- | --- |
| 处理用户已经提供的普通文本 | 只有实时 schema 仍提供 `everyinfra_chat` 且用户授权时才调用。 | 按届时公开的兼容或退役通知处理;清洗不是所有通用文本任务的等价替代。 |
| 清洗 EveryData 结果 | 先发现实时清洗契约,再核权益、来源版本和预览,最后按授权提交;不把通用聊天冒充清洗权益。 | 继续遵循同一来源绑定契约及届时的迁移通知。 |
| 可确定性规范化的数据 | 能用普通代码可靠完成时优先代码。 | 上线后也不强制每条数据经过模型。 |
| 核验当前事实 | 使用 EverySearch 或研究工作流。 | 清洗结果仍不能代替事实来源。 |

不得根据本文件猜清洗工具名或请求载荷。以生产 MCP `tools/list` 和公开 OpenAPI 为准;如果没有
发现清洗能力,就停止并说明当前不可用,不能把源数据改送通用聊天作为静默回退。

## 迁移顺序

1. 旧通用接口仍公开时,保留已有、已授权的 `everyinfra_chat` 调用;本文件不公布退役日期。
2. 区分“用户自带文本”与“EveryData 站内结果”两类调用。
3. 来源绑定请求先发现正式schema,并保留服务端签发的来源引用和版本。
4. 按发现、权益查询、预览、显式领取、幂等提交的顺序接入。
5. 提交结果未知时查询原操作,不换幂等键,也不切回通用聊天重做。
6. 只有在公布明确日期和兼容期后才退役旧集成;30 天迁移期与账户的 30 天清洗权益不是同一周期。

## 三层交付边界

- **Skill** 是工作方法和决策说明;修改 Skill 不会增加服务端能力。
- **MCP** 是线上工具连接和实时 schema;只有生产服务发现并执行清洗,才能宣称 MCP 可用。
- **Plugin** 是分发 Skill 与 MCP 元数据的可安装包;发布或安装插件不等于账户已获清洗权限。

返回 [EveryAI 中文说明](../README.zh-CN.md)或[工作流程](workflow.md)。
15 changes: 15 additions & 0 deletions docs/workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@

A text transformation that matches the requested format, with absent information and uncertainty kept visible. JSON-shaped text must still be parsed and checked before downstream automation uses it.

## Cleanup transition decision

If the input is an EveryData result, do not route it through general chat merely to obtain the
planned cleanup benefit. Call MCP `tools/list` and inspect the returned `inputSchema`; the public
OpenAPI document is a secondary integration reference. When discovery does not return cleanup,
stop with a clear unavailable result. When it does, inspect entitlement, source/version, inferred
fields and recipes before previewing. The complete current and post-launch decision table is in the
[migration guide](migration.md).

## Execution contract

1. Discover everyinfra_chat and its live model enum.
Expand All @@ -12,6 +21,12 @@ A text transformation that matches the requested format, with absent information
4. Call the authorized model operation with OpenAI-style messages.
5. Check format, required fields and missing values; report uncertainty rather than inventing absent facts.

For discovered source-bound cleanup, do not reuse this chat sequence. Follow the separate flow:
`get_entitlement` → `get_source` / `get_source_fields` / `list_recipes` → `preview` → explicit
`activate` when needed → explicit `submit`. After interruption or refresh, use `list_jobs` or
`find_job` with the original idempotency key, then inspect `get_job` / `list_units` / `get_result`.
Export, partial export, cancel and result deletion remain separate user choices.

## Failure handling

If discovery or catalog access fails, stop before a paid action. Read required fields from the current schema instead of copying a remembered payload. Report unavailable capabilities and denied account scopes as distinct conditions. Do not broaden keys, repeatedly retry a permanent error or substitute an unrelated mechanism without disclosure.
Expand Down
21 changes: 21 additions & 0 deletions examples/acceptance.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,26 @@
"must_discover_contract": true,
"must_not_infer_permission": true,
"example_type": "illustrative-not-live"
},
{
"prompt": "I want to normalize selected fields from an EveryData result. Check live discovery for a source-bound cleanup contract; if absent, stop without using general chat as a fallback.",
"must_preserve_scope": true,
"must_discover_contract": true,
"must_not_infer_permission": true,
"example_type": "illustrative-not-live"
},
{
"prompt": "My source-bound cleanup submission was interrupted. Discover the live tools and use the original idempotency key to find the original task without creating a replacement.",
"must_preserve_scope": true,
"must_discover_contract": true,
"must_not_infer_permission": true,
"example_type": "illustrative-not-live"
},
{
"prompt": "Discover the selectable fields for this authorized EveryData source without returning example values or submitting a cleanup task.",
"must_preserve_scope": true,
"must_discover_contract": true,
"must_not_infer_permission": true,
"example_type": "illustrative-not-live"
}
]
14 changes: 14 additions & 0 deletions examples/prompts.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,18 @@ These examples are illustrative task requests, not live API output.

> Summarize this authorized document for an engineer. Preserve uncertainty and do not add current facts from memory.

## Cleanup transition candidate — not live

> I want to normalize selected fields from an EveryData result. First check whether a source-bound
> cleanup contract is present in live discovery. If it is absent, stop and explain that the feature
> is not public; do not send the result through general chat as a fallback.

> My cleanup submission was interrupted. Call `tools/list` first. If cleanup is live, use the
> original idempotency key to find the original task; do not submit a replacement merely because
> task lookup returns 404.

> Show me which fields can be selected from this EveryData source. Discover the live cleanup schema,
> read the source version, then use the read-only field-discovery operation. Do not expose example
> values or submit a cleanup task.

See [workflow acceptance criteria](../docs/workflow.md).
1 change: 1 addition & 0 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ This is a documentation navigation index, not a ranking or model-ingestion guara
- [简体中文](README.zh-CN.md): Chinese introduction and safe starting point.
- [Setup](docs/setup.md): host installation and service prerequisites.
- [Workflow](docs/workflow.md): execution and acceptance criteria.
- [Cleanup transition](docs/migration.md): current compatibility path, planned source-bound cleanup and migration gates.
- [Prompts](examples/prompts.md): illustrative bounded requests.
- [Security](SECURITY.md): permissions and secret handling.

Expand Down
Loading
Loading