a6b17ada8b
SetTaskStatus was the only mutation on a task row, so a typo in a dictated task was permanent and a deadline could not move. EditTask rewrites the three fields capture set — text, due date and weight — and nothing else. Status stays the one-way ladder SetTaskStatus owns. Two things the task asked to settle. A text edit re-normalises the dedupe key and can collide with another live row. That is ErrTaskDuplicate, a refusal rather than a merge: two live rows carry two provenances, two capture times and possibly two external identities, and merging picks a winner for all three with nobody asked. The surface names the row that holds the text. A resolved task is refused outright (ErrTaskResolved). Its text is the record of what was finished, and rewriting it rewrites history. due nil clears the date, because clearing has to be sayable — an absent date and "remove the date" cannot be one argument.
159 lines
6.8 KiB
Go
159 lines
6.8 KiB
Go
package ipc
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
// ErrNotImplemented is returned by every UnimplementedCoreAPI method. It is
|
|
// deliberately distinct from ErrUnknownMethod (a wire-level "no such
|
|
// method exists" verdict) and from any daemon-level "locked" error: this one
|
|
// means "this method exists on CoreAPI, but the fake/adapter embedding
|
|
// UnimplementedCoreAPI never got a real implementation for it." A test that
|
|
// exercises an undeclared method fails loudly on this text instead of
|
|
// silently nil-panicking or being mistaken for a legitimate failure.
|
|
var ErrNotImplemented = errors.New("ipc: not implemented (unimplemented CoreAPI stub)")
|
|
|
|
// UnimplementedCoreAPI is the gRPC Unimplemented*Server pattern applied to
|
|
// CoreAPI: embed it in a test double or adapter and override only the
|
|
// methods you actually exercise. Every method returns ErrNotImplemented, so
|
|
// a call that reaches an undeclared method fails loudly and specifically,
|
|
// rather than compiling to a silent no-op or nil-pointer panic. This
|
|
// replaces the old pattern of hand-writing all 30 no-op stubs per double —
|
|
// those were compiler-satisfying padding, not tests of anything.
|
|
type UnimplementedCoreAPI struct{}
|
|
|
|
var _ CoreAPI = UnimplementedCoreAPI{}
|
|
|
|
func (UnimplementedCoreAPI) WriteFact(ctx context.Context, req WriteFactReq) (int64, error) {
|
|
return 0, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) LatestFact(ctx context.Context, key string) (Fact, error) {
|
|
return Fact{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) LatestFactBySource(ctx context.Context, key, source string) (Fact, error) {
|
|
return Fact{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) Since(ctx context.Context, key string, now time.Time) (time.Duration, error) {
|
|
return 0, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) Presence(ctx context.Context) (Presence, error) {
|
|
return Presence{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) CreateReminder(ctx context.Context, fire time.Time, payload, cron string) (int64, error) {
|
|
return 0, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) MarkReminder(ctx context.Context, id int64, status string) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) ListReminders(ctx context.Context, n int) ([]Reminder, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecordNudge(ctx context.Context, rule, channel, message string, ts time.Time) (int64, error) {
|
|
return 0, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) ResolveNudge(ctx context.Context, id int64, outcome string, ts time.Time) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecentOutcomes(ctx context.Context, rule string, n int) ([]string, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecentFacts(ctx context.Context, n int) ([]Fact, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecentActiveFactsByKind(ctx context.Context, kind string, n int) ([]Fact, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) CalendarEvents(ctx context.Context, from, to time.Time) ([]Fact, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) DeliveryAttempts(ctx context.Context, status string, n int) ([]DeliveryAttempt, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecentNudges(ctx context.Context, n int) ([]Nudge, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecentEcosystemTraces(ctx context.Context, n int) ([]EcosystemTrace, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) WriteNote(ctx context.Context, ts time.Time, text string, embedding []float32, source string) (int64, error) {
|
|
return 0, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) QueryNotes(ctx context.Context, embedding []float32, k int) ([]Note, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecentNotesFromSource(ctx context.Context, prefix string, n int) ([]Note, error) {
|
|
return nil, ErrUnknownMethod
|
|
}
|
|
|
|
func (UnimplementedCoreAPI) RecentNotes(ctx context.Context, n int) ([]Note, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) ProposeTool(ctx context.Context, name, utterance, scope string, ts time.Time) (bool, error) {
|
|
return false, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) EnableTool(ctx context.Context, name string, cmd []string, destructive bool, scope string, ts time.Time) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) DisableTool(ctx context.Context, name string) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) DeleteTool(ctx context.Context, name string) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) CaptureTask(ctx context.Context, req CaptureTaskReq) (CaptureTaskResp, error) {
|
|
return CaptureTaskResp{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) SeedEvent(ctx context.Context, req SeedEventReq) (SeedEventResp, error) {
|
|
return SeedEventResp{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) ListTasks(ctx context.Context, status string) ([]Task, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) SetTaskStatus(ctx context.Context, id int64, status string, ts time.Time, by string) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) EditTask(ctx context.Context, id int64, text string, due *time.Time, weight int) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) SetTaskFields(ctx context.Context, id int64, doneWhen, blockedOn string) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) ListProposedRoutines(ctx context.Context) ([]ProposedRoutine, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) DismissProposedRoutine(ctx context.Context, id int64) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) AcceptProposedRoutine(ctx context.Context, id int64) error {
|
|
return ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) LookupTool(ctx context.Context, name string) (Tool, error) {
|
|
return Tool{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) ListTools(ctx context.Context, status string) ([]Tool, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RevertFact(ctx context.Context, key string) (int64, error) {
|
|
return 0, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) TickTrace(ctx context.Context) (TickTrace, error) {
|
|
return TickTrace{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) MorningStatus(ctx context.Context) ([]MorningRoutineStatus, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) RecentEvents(ctx context.Context, n int) ([]IntakeEvent, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) MCPServers(ctx context.Context) ([]MCPServerStatus, error) {
|
|
return nil, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) DayPlan(ctx context.Context) (DayPlan, error) {
|
|
return DayPlan{}, ErrNotImplemented
|
|
}
|
|
func (UnimplementedCoreAPI) Chat(ctx context.Context, conversation, text string) (ChatReply, error) {
|
|
return ChatReply{}, ErrNotImplemented
|
|
}
|